Git Oktopus Zusammenführungsreihenfolge von mehreren Zweigen
Hatte ich eine interessante Sache, die passieren, git, Frage mich, wenn jemand könnte es mir erklären, damit ich besser verstehen können.
Wenn dabei eine Zusammenführung mehrere Zweige (A,B),
git merge A B
nicht als non-fast-forward, während
git merge B A
gut funktioniert. Warum würde das sein?
InformationsquelleAutor der Frage James Maroney | 2011-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nehmen wir an, dass A eine strikte, direkte Kind des aktuellen branch. Dann annehmen, dass B ist eine strenge, direkte Kind Einer.
Des octopus-merge, die Prozesse Köpfe gegeben, die als Argumente von Links nach rechtsinkrementell mit Bezug auf den Baumaber unabhängig voneinander mit Bezug auf den index gelingt, ohne dass Konflikte auftreten, wenn versucht wird, gelten B und dann A, sondern auf einen Konflikt, wenn es funktioniert das konvertieren.
Als pro die
git-merge
- Handbuch, Abschnitt MERGE-STRATEGIEN:Zum Beispiel:
In der Tat, wenn fast-Weiterleitung an Einen, dem label von master wurde nicht vorangetrieben, obwohl der Baum hat.
Wenn Sie den code betrachten, was die octopus-merge macht, führe ich diese manuell (nach oben für hashes):
In die andere Richtung (
merge B A
), jetzt, wenn Sie noch einmal einen Blick auf den code von merge-Krake, es versucht zu erkennen, der Zweig, die wir hinzufügen möchten, ist bereits in der Struktur (zweitercase
desfor
loop). In der Tat, auf die Zusammenführung Eines, es sieht ac5b51c (ein.k.ein. Ein Kopf) ist der gemeinsame Vorfahr von A und B, und bricht ab, ohne dabei den zweitenread-tree
.Dieses Verhalten ist konsistent mit der frischen version von git : allerdings habe ich deutete auf v. 1.3.1, ist dies immer noch geschieht, mit meiner version.
tl;dr : Sie möchten, dass Ihre octopus-merge-Zweige zu berühren unterschiedliche Dateien
InformationsquelleAutor der Antwort huitseeker