Arbeiten mit Git Submodulen
Unterstützung für Git Submodule in die globale Git-Konfiguration aufnehmen
Mit nur wenigen kleinen Änderungen in der globalen Konfiguration lässt sich die Standardfunktionalität von vielen git Befehlen erweitern, damit eventuell vorhandene Submodule berücksichtigt werden.
Zusätzliche Ausgabe bei git diff
und git status
Um bei einem git diff
zu sehen, ob ein Submodul aktualisiert wurde und um eine Liste der Commits, die ihm hinzugefügt wurden zu erhalten, lässt sich git diff
mit dem Flag --submodule
aufrufen. Das Flag kann auch als Option der globalen Konfiguration hinzugefügt werden:
git config --global diff.submodule log
Und damit man mittels git status
auch die Updates der Submodule in einer kurzen Zusammenfassung angezeigt bekommt, fügt man folgende Option hinzu:
git config --global status.submodulesummary true
Submodule nach einem git pull
im Hauptrepository aktualisieren
Der Befehl git pull
holt standardmäßig zwar rekursiv die Änderungen der Submodule, er aktualisiert jedoch nicht die Submodule im Arbeitsverzeichnis. Um die Aktualisierungen einzupflegen, muss man noch git submodule update
ausführen.
Alternativ ist es auch möglich das Flag --recurse-submodules
zum Befehl git pull
hinzuzufügen. Will man immer git pull
mit diesem Flag ausführen, fügt man der globalen Konfiguration eine weitere Option hinzu:
git config --global submodule.recurse true
Diese Einstellung bewirkt tatsächlich, dass nicht nur git pull
immer mit dem Flag --recurse-submodules
ausgeführt wird, sondern auch auch alle anderen git
Befehle, die diese Option unterstützen.
Übrigens: Um beim Pushen des Hauptrepositories Änderungen in den Submodulen zu prüfen und den Push nicht zuzulassen, wenn die Submodule nicht aktuell sind, ruft man git push
mit der Option --recurse-submodules=check
auf.