Ich this Lesen:Warum wird ein gemeinsamer Vorgänger in einem 3-fachen Merge-Commit benötigt?
In diesem Fall tut Git einen einfachen Drei-Wege-Merge, indem die beide Schnappschüsse von den Zweigspitzen und dem gemeinsamen Vorfahren der zwei spitz.
Drei in einem typischen merge verwendet Schnappschüsse. Abbildung 3-16. Drei Snapshots , die in einer typischen Zusammenführung verwendet werden Statt den Verzweigungszeiger vorwärts zu verschieben, erstellt Git einen neuen Snapshot, der aus dieser dreiseitigen -Zusammenführung resultiert, und erstellt automatisch eine neue Festschreibung, die darauf verweist. Diese wird als ein Zusammenführen-Commit bezeichnet und ist insofern speziell, als es mehr als ein Elternteil hat.
Die zwei Tipps machen Sinn ... aber warum brauchen Sie den gemeinsamen Vorfahren?
Nein, es gibt keine Zusammenführung zwischen C3 und C4. Das wäre ziemlich sinnlos, und Sie können sich davon überzeugen, indem Sie einen Konflikt in C3 einführen und ihn in C4 entfernen. Die Zusammenführung zwischen C4 und C5 wird sauber zusammengeführt. –
@ EdwardThomson: Aber C5 ALONE enthält nicht die Änderungen in C3. Es ist möglich, C5 alleine auszuwählen, ohne die Änderungen in C3 zu berücksichtigen. Wenn Sie C5 mit C4 verschmelzen, wird git zuerst C3 mit C4 verbinden. Ja, wenn Sie C4 mit C5 verbinden, müssen Sie es nicht zuerst auf C3 anwenden, aber das ist nicht das, was das Diagramm zeigt, oder? – slebetman
Nr. C3 hat nichts mit dem Ergebnis zu tun. C5 wird mit C4 zusammengeführt, wobei C2 als Zusammenführungsbasis verwendet wird. C3 wird komplett ignoriert, das intermediäre Commit ist für 'git merge' einfach egal. –