Git Submodul für jeden Git Pull-Ursprungs-Master vs. Git Pull - Rekursiv-Submodule

2643
Ncat

Ich verwalte ein Repository mit mehreren Submodulen. Seit einiger Zeit benutze ich

$ git submodule foreach git pull origin master 

um die neuesten Änderungen für alle diese Jungs einzuziehen. Vor kurzem habe ich jedoch etwas darüber erfahren

$ git pull --recurse-submodules 

und gab es einen Versuch, aber es scheint, dass Änderungen nur abgerufen werden, so müssen Sie es tun

$ git submodule update --recursive 

um die Änderungen tatsächlich zu überprüfen. Letzteres scheint jedoch nichts in meinem Repository zu tun, obwohl Submodule eindeutig Änderungen hervorbringen. Mir ist auch aufgefallen, dass meine Submodule zu einem Commit statt zu einem Master oder einem anderen Zweig ausgecheckt sind.

  1. Mache ich etwas falsch?
  2. Oder ist das ein Artefakt der foreachArt, wie ich früher Dinge tat?
  3. Wie kann ich das reparieren pull --recurse-submodulesund submodule update --recursivewie erwartet arbeiten?
3

1 Antwort auf die Frage

1
idbrii

git submodule update --recursiveaktualisiert die Submodule so, dass sie mit dem Commit im übergeordneten Repo übereinstimmen. Sie müssen also eine Änderung am übergeordneten Repo vornehmen, damit der Befehl etwas ausführen kann.

Mit diesem Setup:

/proj/.git /proj/module/.git 

Sie nehmen Änderungen in "Modul" vor, legen fest und drücken sie. In "proj" legen Sie ein Commit-Modul fest (es zeigt nur den Submodul-Commit-Hash, der geändert wird).

Wenn Sie jetzt ein Submodule-Update abrufen, wird das "Modul" für die Verwendung des neuen Commits aktualisiert.