Von Gast (nicht überprüft) , 29 April 2026

Was Submodule sind

Ein Submodul ist ein Git-Repository, das in einem anderen verschachtelt ist. Das ubergeordnete Repo zeichnet die URL des Submoduls und einen spezifischen Commit-SHA auf, sodass jeder, der das ubergeordnete klont, genau den gemeinsam getesteten Code abrufen kann.

Submodul hinzufugen

git submodule add https://github.com/example/lib third_party/lib
git commit -m "Add lib submodule"

Projekt mit Submodulen klonen

git clone --recurse-submodules https://github.com/you/parent
git submodule update --init --recursive

Auf neuen Submodul-Commit aktualisieren

cd third_party/lib
git fetch
git checkout v2.0.0
cd ../..
git add third_party/lib
git commit -m "Bump lib to v2.0.0"

Diff und Status

git diff --submodule=log
git submodule status
git submodule summary

Foreach

git submodule foreach 'git fetch --all'
git submodule foreach --recursive 'git checkout main && git pull'

Haufige Fehler

--init beim ersten Klonen vergessen lasst Submodul-Verzeichnisse leer. Im Submodul bearbeiten und im Parent committen ohne vorher das Submodul zu pushen.

Branch-Tracking-Falle

Submodule checken am aufgezeichneten SHA detached HEAD aus.