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 superyund 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 superywird das Tag v1.0des Git-Projekts subbyals Submodul bezeichnet. Der Zweig von hat die Referenz des Submoduls superyaufgerufen one.oneund geändert, um auf das Tag v1.1von zu verweisen subby.
Ich kann problemlos in jedem dieser Zweige arbeiten, aber wenn ich versuche, den one.oneZweig mit Änderungen aus dem masterZweig zu aktualisieren, erhalte ich einige Konflikte und weiß nicht, wie ich sie lösen kann.
Grundsätzlich sieht es nach einer git pull . masterWeile in der subbyVerzweigung so aus, als würden zusätzliche Submodule erstellt.
Vor dem Ziehen / Zusammenführen erhalte ich die gewünschte Antwort git submodulevon der one.oneVerzweigung:
$ 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 pullkann, der meine Submodule ignoriert?