Was ist Head in Git?

Manchmal sehen Sie die Git-Dokumentation, die sich auf etwas mit dem Namen HEAD bezieht. Beispielsweise sollte der Zweig vollständig in HEAD integriert sein. Aber was genau ist Git HEAD?

In diesem Artikel werden wir mehr über Git HEAD erfahren, aber vorher wollen wir nur zusammenfassen, was Git ist und wofür es verwendet wird. Git ist ein Tool für die verteilte Kontrolle, das nicht nur von Produktmanagern und Entwicklern, sondern auch von Datenwissenschaftlern verwendet wird, um die Quellcodeentwicklung des Programms und dessen Verlauf zu verwalten.

HEAD Zeiger in Git

Git verwaltet eine Variable für die Referenzierung mit dem Namen HEAD für das letzte Commit im letzten Checkout-Zweig. Sie können sich HEAD als den „aktuell engagierten Zweig“ vorstellen. Und wir können uns das als Zeiger vorstellen, da der Zweck dieser Variablen darin besteht, auf ein bestimmtes Commit im Repository zu verweisen oder als Referenz dafür zu fungieren. Nehmen wir an, wir machen ein neues Commit im Repo, dann bewegt sich der Zeiger oder HEAD oder ändert seine Position, um auf ein neues Commit zu zeigen.

HEAD zeigt jederzeit auf den Startpunkt des aktuellen Zweigs im Repository. Es kann als der letzte Status oder der letzte ausgecheckte Punkt in einem Repository betrachtet werden. Mit anderen Worten, HEAD ist ein Zeiger auf das übergeordnete Objekt des nächsten Commits oder darauf, wo das nächste Commit stattfinden wird, da das Repo dort aufgehört hat.

Eine gute Analogie wäre ein Plattenspieler und die darauf befindlichen Wiedergabe- und Aufnahmetasten als HEAD. Wenn die Audioaufnahme beginnt, bewegt sich das Band vorwärts, indem es auf den Kopf aufnimmt. Die Stopp-Taste stoppt die Aufnahme, während sie auf den Punkt zeigt, an dem sie zuletzt aufgenommen wurde, und an dem Punkt, an dem der Aufnahmekopf gestoppt wurde, wird die Aufnahme fortgesetzt, wenn die Taste erneut gedrückt wird. Wenn wir uns bewegen, bewegt sich der Kopfzeiger an eine andere Stelle. Wenn Sie jedoch erneut auf Record drücken, beginnt die Aufnahme an der Stelle, auf die der Kopf zeigte, als Record gedrückt wurde.

In Git können Sie den folgenden Befehl verwenden, um zu sehen, auf was der HEAD-Zeiger zeigt.

cat .git / HEAD:

  • Es zeigt den Inhalt von .git / HEAD wie unten gezeigt
  • ref: refs / heads / master
  • Dies ist im Grunde ein symbolischer Verweis auf die letzte festgeschriebene Verzweigung, die Sie ausgecheckt haben, und verweist effektiv auf die Festschreibung am Anfang der aktuellen Verzweigung.

Wann immer wir ein neues Commit durchführen, wie unten gezeigt, wird es vor dem aktuellen HEAD hinzugefügt, wodurch Git den HEAD automatisch auf das neue Commit verweist.

git diff HEAD..HEAD ~ 3: Genauer gesagt ist HEAD ein sich bewegender Zeiger, der sich auf den aktuellen Zweig beziehen könnte oder nicht, aber er bezieht sich immer auf das „aktuelle Festschreiben“. Dabei handelt es sich um das Commit, auf dem "git commit" aufbaut und häufig mit "git diff-cached" und "git status" verglichen wird.

git log @: Die Eingabe von 'HEAD' nimmt viel Zeit in Anspruch, insbesondere wenn eine Verknüpfung vorhanden ist, stattdessen '@'. Das Symbol '@' wird gewählt, weil es natürlich der Syntax folgt (z. B. (u)), aber ansonsten gibt es keine Referenz oder Operation, und wenn es keine davon gibt, 'HEAD 'kann anstelle von @ angenommen werden.

1. Abgenommener KOPF

Es ist plausibel, dass HEAD auf eine bestimmte Änderung verweist, die noch nicht mit einem Zweignamen verknüpft ist. Dies ist die Situation, die als abgetrennter HEAD bezeichnet wird. Sie tritt auf, wenn jemand etwas anderes als einen (lokalen) Zweig auscheckt, beispielsweise ein bestimmtes Commit, einen entfernten Zweig oder ein Tag. Mit dem abgetrennten HEAD kann daher ein Commit ausgecheckt werden, das nicht auf den Startpunkt eines vorhandenen Zweigs verweist, oder es kann ein brandneues Commit erstellt werden, auf das nicht unbedingt von einem bekannten Zweig verwiesen wird.

Nehmen wir ein Beispiel, in dem wir checkout commit b auf die eine oder andere Weise ausführen

  • Git Checkout Master ^#oder
  • git checkout v3.1

Beachten Sie, dass HEAD unabhängig vom verwendeten Checkout-Befehl jetzt auf commit verweist. B. Dieser Status von b wird als abgelöster HEAD-Status bezeichnet.

Schauen wir uns die folgenden Beispiele an, um zu sehen, was passiert, wenn ein Commit erstellt wird:

git checkout -b foo: Zuerst wird ein neuer Zweig mit dem Namen foo erstellt, der als commit f bezeichnet wird. Dadurch wird der HEAD aktualisiert, sodass er auf branch foo zeigt. Dies bedeutet, dass es sich nicht länger in einem getrennten HEAD-Zustand befindet.

Git-Zweig foo: Hiermit wird ein neuer Zweig mit dem Namen foo erstellt, der als Commit f bezeichnet wird, der HEAD bleibt jedoch abgetrennt.

Git-Tag foo: Auch dies erzeugt ein neues Tag mit dem Namen foo, das als Commit f bezeichnet wird, aber der HEAD bleibt abgetrennt.

Angenommen, Sie haben an eine andere Position als commit f gewechselt, und der Objektname muss zuerst wiederhergestellt werden (normalerweise mithilfe des Befehls git reflog). Anschließend wird ein Verweis darauf erstellt.

Verwenden Sie einen der folgenden Befehle, um die letzten beiden Commits zu ermitteln, auf die sich HEAD bezieht:

  • git log -g -2 HEAD #oder
  • Git Reflog -2 HEAD

2. ORIG_HEAD

Es gibt noch eine Art von KOPF, über die Sie Bescheid wissen müssen. Die Befehle "merge" oder "pull" ließen immer die ursprüngliche Spitze des aktuellen Zweigs in etwas namens ORIG_HEAD. Es kann mit den folgenden Befehlen verwendet werden.

git reset –hard ORIG_HEAD: Mit diesem Befehl wird die Indexdatei zusammen mit dem Arbeitsbaum auf den ursprünglichen Zustand zurückgesetzt, während die Spitze des Zweigs auf diesen Commit zurückgesetzt wird. Die lokalen Änderungen werden jedoch verworfen.

git reset –merge ORIG_HEAD: Aber was ist, wenn Sie die lokalen Änderungen beibehalten möchten, indem Sie den obigen Befehl verwenden, um die lokalen Änderungen beizubehalten Eine problematische Zusammenführung kann mit 'git reset ORIG_HEAD' behoben werden. Darüber hinaus setzt Merge '.git / ORIG_HEAD' jederzeit auf den ursprünglichen HEAD-Status, um ein problematisches Zusammenführen mit 'git reset ORIG_HEAD' zu vermeiden.

Wenn bei mehreren Commits Probleme auftreten, wird ORIG_HEAD auf den Startpunkt des aktuellen Zweigs gesetzt, bevor Patches angewendet werden, da ein Fehler in den Commits auf diese Weise leichter behoben werden kann.

Vorteile von Git HEAD

  • Es wird verwendet, um auf den kürzlich festgeschriebenen Zweig zu verweisen.
  • Hiermit können Änderungen am zuletzt besuchten Punkt vorgenommen werden.
  • Es kann auch verwendet werden, um zu verschiedenen Punkten in der Geschichte zu gelangen und von dort aus zu arbeiten.
  • Hält das Repository und den Prozess sauber und lesbar.

Fazit

Git ist vielseitig einsetzbar und wird von Entwicklern, Produktmanagern und Datenwissenschaftlern intensiv genutzt. Seine Befehle sind sehr effektiv und können sehr nützlich sein. HEAD ist ein Verweis auf das letzte Festschreiben im derzeit ausgecheckten Zweig.

Empfohlene Artikel

Dies ist eine Anleitung zu What is Head in Git ?. Hier diskutieren wir den HEAD Pointer in Git, der Detached HEAD und ORIG_HEAD zusammen mit den Vorteilen von Git HEAD enthält. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Was ist Git Fetch?
  2. Git Fetch gegen Git Pull
  3. Was ist Git Branch?
  4. Git-Terminologie
  5. GIT Versionskontrollsystem
  6. Git Push
  7. Drei Stufen des Git-Lebenszyklus mit dem Workflow
  8. Wie benutzt man GIT Cherry-pick mit Example?

Kategorie: