HEAD ist ein Zeiger auf den aktuellen Zweig. Ich habe eine Vielzahl von Notationen für Vorfahren von HEAD gesehen, einschließlich
HEAD~2
HEAD^2
HEAD@{2}
HEAD~~
HEAD^^
Was bedeutet jeder der oben genannten Punkte genau? Wo ist die Dokumentation dazu?
git help revisions
Antworten:
Aus den Dokumenten hier .
HEAD~2
: 2 Commits älter als HEADHEAD^2
: das zweite Elternteil von HEAD, wenn HEAD eine Fusion war, sonst illegalHEAD@{2}
: bezieht sich auf die 3. Auflistung in der Übersicht vongit reflog
HEAD~~
: 2 Commits älter als HEADHEAD^^
: 2 Commits älter als HEADWenn HEAD eine Fusion war, dann
Einige Kombinationen und Synonyme
quelle
HEAD~0
ist das gleiche wieHEAD
, wie Sie es erwarten würden. Etwas verwirrendHEAD^0
ist auch das gleiche wieHEAD
.^
sieht aus wie zwei Zweige (unten links und unten rechts) verschmelzen zusammen in einem (am oberen Rand)ref~
ist eine Abkürzung fürref~1
und bedeutet das erste Elternteil des Commits.ref~2
bedeutet das erste Elternteil des Commits.ref~3
bedeutet das erste Elternteil des ersten Elternteils des Commits. Und so weiter.ref^
ist eine Abkürzung fürref^1
und bedeutet das erste Elternteil des Commits.ref^2
Wenn sich die beiden jedoch unterscheiden, bedeutet dies, dass der zweite Elternteil des Commits (denken Sie daran, dass Commits zwei Elternteile haben können, wenn sie zusammengeführt werden).Die Operatoren ^ und ~ können kombiniert werden.
Hier ist ein Diagramm, das zeigt, wie verschiedene Commits mit HEAD als Ausgangspunkt referenziert werden.
src
quelle
Ich zähle jeden
~
oder^
meine "eine Ebene zurückgehen". Wenn neben~
(z. B.~n
) eine Zahl steht , fungiert n als Multiplikator. Wenn sich neben^
(z. B.^n
) eine Zahl befindet, ist n das n-te übergeordnete Element (oder die seitliche Bewegung von der Spaltenposition von links nach rechts ingit log --graph
).Beispiel:
Koordinaten für die obigen Tags:
Die
git log --online --graph
Ausgabe macht es schwierig zu erkennen, welche Commits sich auf derselben Ebene befinden. Hier ist eine weitere Darstellung (wobei "A" das letzte Commit ist und ältere Commits oben stehen):(Abbildungen aus Was ist der Unterschied zwischen HEAD ^ und HEAD ~ in Git? ).
quelle