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.

Top