Ich habe ein Git-Superprojekt, das auf mehrere Submodule verweist, und ich versuche, einen Workflow zu sperren, damit der Rest meiner Projektmitglieder darin arbeiten kann.
Nehmen wir für diese Frage an, mein Superprojekt wird aufgerufen supery
und das Submodul wird aufgerufen subby
. (Dann ist eine Vereinfachung dessen, was ich versuche ... Ich verwende die Zweige nicht für Versionen, aber ich dachte, es wäre am einfachsten, sie als Frage zu formulieren.)
In meinem Hauptzweig von supery
wird das Tag v1.0
des Git-Projekts subby
als Submodul bezeichnet. Der Zweig von hat die Referenz des Submoduls supery
aufgerufen one.one
und geändert, um auf das Tag v1.1
von zu verweisen subby
.
Ich kann problemlos in jedem dieser Zweige arbeiten, aber wenn ich versuche, den one.one
Zweig mit Änderungen aus dem master
Zweig zu aktualisieren, erhalte ich einige Konflikte und weiß nicht, wie ich sie lösen kann.
Grundsätzlich sieht es nach einer git pull . master
Weile in der subby
Verzweigung so aus, als würden zusätzliche Submodule erstellt.
Vor dem Ziehen / Zusammenführen erhalte ich die gewünschte Antwort git submodule
von der one.one
Verzweigung:
$ git checkout master
$ git submodule
qw3rty...321e subby (v1.0)
$ git checkout one.one
$ git submodule
asdfgh...456d subby (v1.1)
Aber nach dem Ziehen werden zusätzliche Submodule hinzugefügt, wenn ich Folgendes ausführe git submodule
:
$ git pull . master
Auto-merged schema
CONFLICT (submodule): Merge conflict in subby - needs qu3rty...321e
Automatic merge failed; fix conflicts and then commit the results.
$ git submodule
qw3rty...321e subby (v1.0)
asdfgh...456d subby (v1.1)
zxcvbn...7890 subby (v1.1~1)
Wie lösche / ignoriere ich die unerwünschten Submodulreferenzen und begebe meine Konflikte und Änderungen? Oder gibt es einen Parameter, den ich mit meinem Original verwenden git pull
kann, der meine Submodule ignoriert?