Sagen wir, ich habe zwei Zweige in RepoX namens BranchA und BranchB. RepoX hat auch ein Submodul namens SubmoduleY.
BranchA hat SubmoduleY bei Revision 'abc', BranchB hat SubmoduleY bei Revision 'def'.
Angenommen, ich möchte BranchA in BranchB zusammenführen, aber ich möchte BranchBs SubmoduleY auf seine ursprüngliche Revision von 'def' verweisen lassen. Ich sehe ein paar Möglichkeiten, dies zu tun:
Methode 1:
Methode 2:
Wie Methode 1, aber anstatt Schritt 6 auszuführen, müssen Sie das zusätzliche Submodul-Commit aus Schritt 3 neu erstellen und entfernen.
Beide scheinen ärgerliche Nachteile zu haben:
Methode 1 schreibt zwei zusätzliche Commits in den Verlauf.
Methode 2 vergisst alle Änderungen, die mit Submodul-Revisionen vorgenommen werden, da diese Commits entfernt werden. Daher müssen spätere Zusammenführungen wieder mit einigen Problemen fertig werden.
Gibt es einen besseren Weg?
Sie könnten eine Variante für Ihre Methode 1 machen, aber führen Sie das Commit durch, das die Änderung in die Submodulversion (in Ihrem Schritt 6) mit --amend
einführt, so dass es den Zustand des Submoduls im Merge-Commit ändert. Mit anderen Worten, das wäre:
Beachten Sie, dass ich nicht versucht habe, zu vermeiden, die Submodule in verschiedenen Versionen vor dem Zusammenführen zu haben, wie Sie in Ihrer Frage vorgeschlagen haben. Wenn es einen Konflikt gibt, können Sie einfach das Submodul unter def
hinzufügen, um es zu lösen. Wenn es keinen Konflikt gibt, sollten die oben genannten Schritte funktionieren.
Tags und Links merge git git-submodules