Wenn Sie Zweige mit Git Checkout wechseln, würde ich davon ausgehen, dass Sie die meiste Zeit Ihre Submodule aktualisieren möchten.
- In welcher Situation möchten Sie Submodule nach dem Wechsel nicht aktualisieren?
- Was würde kaputt gehen, wenn dies automatisch durch Git Checkout gemacht würde?
Mit Beispiel aktualisiert:
- Zweig A hat das Submodul S bei 3852f1
- Zweig B hat das Submodul S bei fd72d7
In Zweig A führt Git Checkout B zu einer Arbeitskopie von Zweig B mit dem Submodul S bei 3852f1 (mit einem modifizierten S). Das Git-Submodul-Update wird S bei fd72d7 auschecken.
git
git-submodules
serbaut
quelle
quelle
Antworten:
Ich glaube, dass die Submodule, die nicht automatisch aktualisiert werden, den Entwicklungszielen von Git entsprechen. Git soll in einem verteilten Modus arbeiten und setzt nicht voraus, dass Sie überhaupt eine Verbindung zu einem nicht lokalen Repository herstellen können, es sei denn, Sie weisen dies ausdrücklich an. Wenn ein Submodul nicht automatisch aktualisiert wird, ist dies das erwartete Verhalten, wenn man es so betrachtet.
Wenn Sie jedoch wissen, dass diese Submodule immer eingezogen werden sollen und Sie wissen, dass Sie diese Submodule niemals in ein anderes lokales Repository verzweigen würden, sollte dies nichts beschädigen, wenn Sie sie anschließend automatisch aktualisieren eine Kasse.
quelle
git fetch
hat eine Option zum automatischen Abrufen von Submodulen, daher denke ich auch, dass das Auschecken eine ähnliche Option zum automatischen Aktualisieren / Auschecken von Submodulen haben sollte.git checkout --recurse-submodules
wurde zu git 2.13 hinzugefügtDies wird in den Versionshinweisen unter https://github.com/git/git/commit/e1104a5ee539408b81566066aaa6963cb87d5cd6#diff-c24776ff22455a30fbb78e378b7df0b0R139 erwähnt
submodule.recurse
Option wurde zu Git 2.14 hinzugefügtFestlegen als:
man git-config
sagt:Ich bin der Meinung, dass das Nicht-Aktualisieren von Modulen standardmäßig ein schlechtes Git-Standardverhalten ist, das den Erwartungen der meisten Benutzer widerspricht und die Einführung von Submodulen einschränkt. Ich wünschte wirklich, die Entwickler würden es ändern.
quelle
submodule.recurse
scheint ab git 2.14 zu funktionieren.submodule.recurse
eingestellttrue
, aber ich finde, es gibt immer noch Zeiten (hin und her springen über das Hinzufügen eines Submoduls, denke ich?), In denen ichgit submodule update --init --recursive
nach meinem tun mussgit checkout
. Gibt es eine Möglichkeit, dies automatisch zu erreichen?Mit Git 2.27 (Q2 2020) ist die
--recurse-submodules
Option " " besser dokumentiert.Siehe Commit acbfae3 , Commit 4da9e99 , Commit d09bc51 , Commit b3cec57 , Commit dd0cb7d (06. April 2020) von Damien Robert (
damiens-robert
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit cc908db , 28. April 2020)quelle