git submodule
Bindet andere Repositorys in dein Repository ein
Der Befehl 'git submodule' bettet ein anderes Git-Repository in einen deiner Ordner ein, festgelegt auf einen genauen Commit. Dein Repository speichert nur, welcher Commit des Submoduls genutzt wird; das Submodul behält seine eigene Historie. So binden Projekte gemeinsame Bibliotheken ein, die sie nicht kopieren wollen. Beim Klonen braucht es --recurse-submodules (oder git submodule update --init), um sie zu holen.
Syntax
git submodule add <url> [<path>]
git submodule update --init --recursive
git submodule status
git submodule foreach <command>Beispiele
Eine Bibliothek hinzufügen
git submodule add https://github.com/acme/ui.git lib/uiKlont sie und speichert ihren Commit.
Nach dem Klonen
git submodule update --init --recursiveJedes Submodul holen.
Mit ihnen klonen
git clone --recurse-submodules <url>Alles in einem Schritt.
Auf den neuesten Stand
git submodule update --remoteJedes Submodul auf den neuesten Commit seines Branches bringen.
Workflow-Beispiele
cd lib/ui && git pullDas Submodul vorrücken
cd ../.. && git add lib/uiDen neuen Commit festhalten
git commit -m "Update ui library"Committen
Fehlerbehebung
Leerer Submodul-Ordner
Ursache: Submodule wurden nicht geholt
git submodule update --init --recursive
Tipps & Stolperfallen
Best Practices
- ✓Setze git config --global submodule.recurse true, damit pull und checkout Submodule aktualisieren.
Häufige Fehler
- ✗Ohne --recurse-submodules klonen und leere Ordner bekommen.
- ✗In einem Submodul auf losgelöstem HEAD committen und die Arbeit verlieren.
- ✗Vergessen, den neuen Submodul-Commit im übergeordneten Repository zu committen.
FAQ
Nur die URL des Submoduls (in .gitmodules) und den genauen Commit, den es nutzt.