dokumentieren Diese sind (wenn auch nicht alles, was klar, glaube ich) in the gitrevisions
documentation: durch eine Stufennummer (0 bis 3) und ein Doppelpunkt, gefolgt von einem Pfad, Namen optional gefolgt
Ein Doppelpunkt, ein Blob-Objekt im Index am angegebenen Pfad. Eine fehlende Stufennummer (und der darauffolgende Doppelpunkt) benennt einen Eintrag der Stufe 0. Während einer Zusammenführung ist Stufe 1 der gemeinsame Vorgänger, Stufe 2 ist die Version des Zielzweigs (normalerweise der aktuelle Zweig) und Stufe 3 ist die Version aus der Verzweigung, die zusammengeführt wird.
Dazu müssen Sie dann Wissen hinzufügen, wie git rebase
und git cherry-pick
funktionieren.
Die normale Rosinenpickerei ist wohldefiniert: "unsere" ist die HEAD
Version, d. H. Der Zweig, den Sie waren (und immer noch sind), während "ihr" das Commit ist, das Sie aktiv auswählen. Wenn du einen einzelnen Commit auswählst, ist es ziemlich offensichtlich: Phase 1 ist der gemeinsame Vorfahre, Phase 2 ist die Version von der Spitze deines aktuellen Zweigs, und Phase 3 ist die Version, die du gerade pflückst.
Wenn Sie eine Reihe von Commits auswählen, ist dies immer noch wahr, es ist nur iterativ wahr. Nehmen wir an, Sie nehmen zum Beispiel drei Commits in die Hand. Git macht einfach die drei eins nach dem anderen. Während des ersten Cherry-Picks ist Stufe 2 die Spitze deines Zweigs, und Stufe 3 ist die Version vom ersten Commit, die ausgewählt wurde. Sobald der Commit-Cherry-Pick beendet ist, macht Git einen neuen Commit, indem er die Spitze deines Zweigs voranbringt. Dann, während des zweiten Cherry-Picks, ist Stufe 2 die Spitze deines Zweigs, die deinen ersten Kirsch-Pick gemacht hat, und Stufe 3 ist die Version vom zweiten Commit, die ausgewählt wird. Dies wiederholt sich erneut für das endgültige Commit. Jedes Mal ist Stufe # 3 "ihre" Version.
Rebase ist jedoch ein wenig schwierig. Intern beginnt es damit, Sie auf eine neue, anonyme Filiale (einen "abgetrennten HEAD") zu bringen. Dann wird git cherry-pick
ausgeführt, um jedes Commit von Ihrem ursprünglichen Zweig auszuwählen. Das bedeutet, dass "unsere" die abgekoppelte HEAD-Version ist, während "ihre" die Version aus Ihrer ursprünglichen Filiale ist. Genau wie "cherry-pick" wiederholt sich dies iterativ für jeden Commit, der ausgewählt werden soll (wörtlich im Fall einer interaktiven Rebase, bei der Sie die Zeilen bearbeiten). Sobald die Rebase beendet ist, mischt git einfach das Zweig-Label herum, so dass der neue anonyme Zweig, den Sie gerade erstellt haben, Ihr Code ist.
Kurz gesagt, Sie können sich von Rebase als "Umkehrung unserer/ihrer Einstellungen" vorstellen - aber das ist eine Übertreibung. Es könnte genauer gesagt sein, dass Stufe 2 Ihr neuer Code ist, den Sie eingemeldet haben, und Stufe 3 ist Ihr alter Code.