Git HEAD^ vs Git HEAD~ vs Git HEAD{@}
In diesem Artikel wird der Unterschied zwischen einem Git-Caret und einer Git-Tilde erläutert. Ein Git-Caret wird durch ^
dargestellt, während eine Tilde durch ~
dargestellt wird.
Wir werden auch den HEAD{@}
besprechen. Lasst uns beginnen.
Git HEAD^
(Caret)
Wenn wir ein Caret-Zeichen in Git HEAD
einführen, verweisen wir auf den ersten Elternteil des Commits. Daher zeigt git HEAD^2
auf den zweiten Elternteil des Commits.
Was ist der Elternteil eines Commits?
Der Elternteil eines Commits kommt ins Spiel, wenn wir einen oder mehrere Zweige mit einem anderen zusammenführen. Schauen wir uns ein Beispiel an.
Unser Repo hat den Master
-Zweig in Grün und den Other-Branch
-Zweig in Gelb.
Unser Commit E
auf dem other-branch
wird mit dem Commit A
auf dem master
-Branch zusammengeführt. Daher können wir sagen, dass der Commit A
zwei Eltern-Commits hat.
Daher ist ein übergeordnetes Commit einfach das vorherige Commit eines Commits.
Sehen Sie sich die Befehle unten an.
$ git show HEAD^ --oneline
Wenn Sie den obigen Befehl ausführen, wird unser HEAD
bei Commit B
verschoben, wenn wir uns bei Commit A
befinden.
$ git show HEAD^2 --oneline
Andererseits wird der obige Befehl unseren HEAD
verschieben, um E
zu begehen.
Beachten Sie, dass HEAD^
und HEAD^1
denselben Zweck erfüllen.
Es ist erwähnenswert, dass die obige Erklärung nur gilt, wenn wir Filialen zusammengelegt haben. Wenn Sie mit einem Zweig arbeiten, ist HEAD^
das Äquivalent zu HEAD~
.
Git HEAD~
(Tilde)
Das Hinzufügen einer Tilde zum HEAD
zeigt auf den vorherigen Commit des letzten Commit in unserem Branch. Es ist, als würde man in einer geraden Linie zurückgehen.
Schauen wir uns ein Beispiel an.
Wenn also unser HEAD
bei Commit A
ist, dann wird uns git HEAD~
oder git HEAD~1
zu Commit B
verschieben. HEAD~2
verschiebt uns zum Commit C
.
Wenn wir bei Commit E
im other-branch
ausgecheckt sind, verschiebt uns HEAD~1
zu Commit F
und so weiter.
Git HEAD{@}
Diese Kombination weist auf die Position der Referenz zu einem bestimmten Zeitpunkt in unserem lokalen Repository hin. Es erscheint normalerweise, wenn ein git reflog
-Befehl ausgeführt wird, wie unten gezeigt.
Kurz gesagt, ein Caret ist nützlich, wenn wir Zweige in anderen Zweigen zusammenführen und zu einem Commit in einem anderen Zweig wechseln müssen. Die Tilde ermöglicht es uns, zu einem vorherigen Commit des letzten Commit in einem bestimmten Zweig zu wechseln.
Wenn Sie an einem einzelnen Zweig arbeiten, ist HEAD^
dasselbe wie HEAD~
.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn