Wat is Head in Git?

Soms zie je de Git-documentatie die verwijst naar iets dat HEAD wordt genoemd. De vertakking moet bijvoorbeeld volledig in HEAD zijn geïntegreerd. Maar wat is Git HEAD precies?

In dit artikel zullen we meer te weten komen over Git HEAD, maar laten we eerst even samenvatten wat Git is en waarvoor het wordt gebruikt. Git is een tool voor gedistribueerde controle die niet alleen wordt gebruikt door productmanagers en ontwikkelaars, maar ook door gegevenswetenschappers om de ontwikkeling van de broncode van het programma en de geschiedenis ervan te beheren.

HEAD Pointer in Git

Git onderhoudt een variabele voor verwijzingen, genaamd HEAD naar de laatste commit in de recente kassa-vertakking. Je kunt je HEAD voorstellen als de 'huidige toegewijde tak'. En we kunnen een pointer beschouwen, omdat het doel van deze variabele is om te verwijzen naar of te fungeren als een verwijzing naar een bepaalde commit in de repository. Stel, we maken een nieuwe commit in de repo, dan zal de aanwijzer of HEAD zijn positie verplaatsen of wijzigen om naar een nieuwe commit te wijzen.

HEAD wijst te allen tijde naar het startpunt van de huidige branch in de repository. Het kan worden gezien als de laatste status of het laatste uitgecheckte punt in een repository. Met andere woorden, de HEAD is een aanwijzer naar de ouder van de volgende commits of waar de volgende commit gaat gebeuren, want dat is waar de repo is gestopt.

Een goede analogie zou een platenspeler zijn en de afspeel- en opnametoetsen daarop als het HOOFD. Als de audio begint op te nemen, beweegt de band vooruit langs het hoofd door erop op te nemen. Stopknop stopt de opname terwijl u nog steeds naar het punt wijst dat het het laatst heeft opgenomen en het punt waar de opnamekop is gestopt, is waar het opnieuw zal blijven opnemen wanneer nogmaals op Record wordt gedrukt. Als we ronddraaien, beweegt de aanwijzer naar verschillende plaatsen, maar wanneer Record opnieuw wordt ingedrukt, begint de opname vanaf het punt waarnaar de kop wees toen Record werd ingedrukt.

In Git kun je de onderstaande opdracht gebruiken om te zien wat de HEAD-aanwijzer wijst.

cat. git / HEAD:

  • Het toont de inhoud van .git / HEAD zoals hieronder getoond
  • ref: refs / heads / master
  • Het is in feite een symbolische verwijzing naar de laatste gecommitteerde branch die je hebt uitgecheckt en verwijst effectief naar de commit aan het begin van de huidige branch.

Wanneer we een nieuwe commit maken zoals hieronder getoond, wordt deze toegevoegd vóór de huidige HEAD waardoor Git automatisch de HEAD naar de nieuwe commit verwijst.

git diff HEAD..HEAD ~ 3: Preciezer gezegd, HEAD is een bewegende aanwijzer die zou kunnen verwijzen naar de huidige branch, of het zou niet kunnen, maar het verwijst altijd naar de "huidige commit". Het (huidige commit) is de commit “git commit” is gebouwd bovenop, en wordt vaak vergeleken met “git diff –cached” en “git status”.

git log @: Het typen van 'HEAD' kost tijd, vooral als er een snelkoppeling is, '@'. Het symbool '@' wordt gekozen omdat het van nature de syntaxis van volgt (bijv. (u)), maar verder is er geen verwijzing of bewerking en als er geen een is, 'HEAD 'kan worden aangenomen in plaats van @.

1. Vrijstaand HOOFD

Het is aannemelijk dat HEAD verwijst naar een specifieke wijziging die nog niet aan een filiaal is gekoppeld. Dit is de situatie die een ontkoppelde HEAD wordt genoemd en het gebeurt wanneer iemand iets anders dan een (lokale) branch uitcheckt, bijvoorbeeld een specifieke commit, een remote branch of een tag. Losgemaakte HEAD kan daarom worden gebruikt om een ​​commit af te rekenen die niet naar het startpunt van een bestaande branch verwijst, of om een ​​gloednieuwe commit te maken waarnaar niet noodzakelijkerwijs wordt verwezen door een bekende branch.

Laten we een voorbeeld nemen waarin we op een of andere manier commit b afrekenen

  • git afrekenen master ^#or
  • git afrekenen v3.1

Merk op dat ongeacht welk afrekencommando wordt gebruikt, HEAD nu zal verwijzen naar commit b. Deze status van b wordt ontkoppelde HEAD-status genoemd.

Laten we de onderstaande voorbeelden bekijken om te zien wat er gebeurt wanneer een commit wordt gemaakt:

git checkout -b foo: Eerst wordt een nieuwe branch aangemaakt met de naam foo, die wordt verwezen naar commit f die op zijn beurt de HEAD bijwerkt om naar branch foo te wijzen. Dit betekent dat het niet langer in een vrijstaande HEAD-toestand zal zijn.

git branch foo: Dit creëert een nieuwe branch genaamd foo, waarnaar verwezen wordt als commit f, maar de HEAD blijft los.

git tag foo: Dit creëert ook een nieuwe tag met de naam foo, waarnaar verwezen wordt als commit f, maar de HEAD blijft los.

Stel dat u naar een andere positie dan commit f bent veranderd, dan moet eerst de objectnaam worden hersteld (meestal gedaan met de opdracht git reflog) en daarna wordt er een verwijzing naar gemaakt.

Gebruik een van de onderstaande opdrachten om erachter te komen welke de laatste twee commissies HEAD zijn waarnaar wordt verwezen:

  • git log -g -2 HEAD #or
  • git reflog -2 HOOFD

2. ORIG_HEAD

Er is nog een soort HOOFD dat u moet weten. De commando's "samenvoegen" of "trekken" hebben altijd de oorspronkelijke tip van de huidige vertakking verlaten in iets dat ORIG_HEAD wordt genoemd. Het kan worden gebruikt met de volgende opdrachten.

git reset –hard ORIG_HEAD: Met dit, reset hard wordt het indexbestand samen met de werkende structuur teruggebracht naar de oorspronkelijke staat, terwijl de punt van de branch naar die commit wordt gereset, maar het verwijdert de lokale wijzigingen.

git reset –merge ORIG_HEAD: Maar wat als je de lokale wijzigingen wilt behouden, omdat je de bovenstaande opdracht kunt gebruiken om de lokale wijzigingen te behouden.n een problematische samenvoeging kan worden verwijderd met behulp van 'git reset ORIG_HEAD'. Bovendien zet merge te allen tijde '.git / ORIG_HEAD' in de oorspronkelijke staat van HEAD om een ​​problematische merge te verwijderen door 'git reset ORIG_HEAD' te gebruiken.

Als u problemen ondervindt met meerdere commits, wordt ORIG_HEAD ingesteld op het startpunt van de huidige branch voordat patches worden toegepast, omdat een fout in de commits op deze manier gemakkelijker kan worden opgelost.

Voordelen van Git HEAD

  • Het wordt gebruikt om te wijzen op de recent toegewijde tak.
  • Het kan worden gebruikt om wijzigingen aan te brengen vanaf het laatst bezochte punt.
  • Het kan ook worden gebruikt om naar verschillende punten in de geschiedenis te gaan en vanaf daar te werken.
  • Houdt de repository en het proces schoon en leesbaar.

Conclusie

Git heeft veel toepassingen en wordt uitgebreid gebruikt door ontwikkelaars, productmanagers en datawetenschappers. De opdrachten zijn erg effectief en kunnen erg handig zijn. HEAD is een verwijzing naar de laatste commit in de momenteel uitgecheckte branch.

Aanbevolen artikelen

Dit is een gids voor What is Head in Git ?. Hier bespreken we de HEAD Pointer in Git die Losgemaakte HEAD en ORIG_HEAD omvat, samen met de voordelen van Git HEAD. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Wat is Git Fetch?
  2. Git Fetch vs Git Pull
  3. Wat is Git Branch?
  4. Git-terminologie
  5. GIT-versiebeheersysteem
  6. Git Push
  7. Drie fasen van Git-levenscyclus met de workflow
  8. Hoe GIT Cherry-pick met Voorbeeld te gebruiken?

Categorie: