Unser Prozess für Git ist eine periodische Zusammenführung zu unserem Master-Zweig, so dass die Änderungen wieder auf unsere neuesten Features Zweige zusammengeführt werden können. Seit den letzten Runden der Verschmelzung von einem Zweig zum anderen stoßen wir auf ein Problem, bei dem die Lösung nicht klar ist.Warum folgen Commits nicht dem Merge-Base-Fehler?
Wir haben ein Repository mit 19 Submodulen. Wenn wir alle Submodule verschmelzen, sehen wir, was wir für die erwartete Ausgabe halten, die uns Dateien, die verändert werden, mitteilt. Wenn wir dann zum Zusammenführen des "Root" -Repositorys kommen, geht alles nach Süden und wir sehen etwas der folgenden Ausgabe (bearbeitet, um nur auf die Probleme hinzuweisen).
warning: Failed to merge submodule projects/foo1 (commits don't follow merge-base)
warning: Failed to merge submodule projects/foo2 (commits don't follow merge-base)
warning: Failed to merge submodule projects/foo3 (not fast-forward)
Found a possible merge resolution for the submodule:
931a61165f3b2079523a122477fa5f44c123406d: Comment of last merge
If this is correct simply add it to the index for example by using:
git update-index --cacheinfo 160000 931a61165f3b2079523a122477fa5f44c123406d "projects/foo3"
which will accept this suggestion.
Jetzt können wir den vorgeschlagenen git update-index
Befehl ausführen. Es wird Git für dieses eine Submodul glücklich machen, aber wir mussten das nie zuvor tun. Das Problem ist sehr schlecht, wenn man sich die Submodule foo1 und foo2 anschaut, in denen keine Hilfe angezeigt wird.
Haben Sie für jede Änderung der Submodule auch das Parent-Repo festgeschrieben und gedrückt? – VonC
Vor dem Zusammenführen sind beide Bäume vollständig funktionsfähig, ohne dass in einem Submodul ein verpasstes Commit aufgetreten ist. Meinst Du das? – Peter
Ich meine, dass, wenn Sie ein Submodul ändern, müssen Sie Commit und Push, dann gehen Sie zum Eltern, Commit und Push auch (weil der SHA1 des Submoduls geändert hat). Ich habe mich gefragt, ob Sie irgendwelche Änderungen an diesen Submodulen vorgenommen haben (und wenn ja, wenn Sie der Commit-Push-Sequenz gefolgt sind), bevor Sie versuchen, das Parent-Repo zusammenzuführen. – VonC