Git Submodule
Zuletzt aktualisiert
Ein Submodule bettet ein Git-Repository in ein anderes ein, fixiert auf einen bestimmten Commit. Das übergeordnete Repo hält fest, von welchem Commit des Submodules es abhängt, sodass alle dieselbe Version erhalten. So bindest du eine gemeinsam genutzte Bibliothek oder Komponente ein, die in ihrem eigenen Repository lebt, ohne ihren Code zu kopieren.
Probiere das im Terminal-Playground aus - eine echte Shell in deinem Browser, nichts zu installieren.
Syntax
| Command | What it does |
|---|---|
git submodule add <url> libs/x | Ein Repo als Submodule unter libs/x hinzufügen |
git clone --recurse-submodules <url> | Ein Repo und seine Submodules klonen |
git submodule update --init --recursive | Submodules nach einem einfachen Klon initialisieren und holen |
git submodule update --remote | Submodules auf ihren neuesten Commit aktualisieren |
git submodule status | Den Commit jedes Submodules anzeigen |
Häufige Fälle
| Goal | Command |
|---|---|
| Ein Projekt klonen, das Submodules verwendet | git clone --recurse-submodules <url> |
| Submodules nach dem Klonen nachholen | git submodule update --init --recursive |
| Ein Submodule auf den neuesten Stand bringen | git submodule update --remote |
git submodule FAQ
Was ist ein git submodule?
Ein Submodule ist ein Git-Repository, das in einem anderen Git-Repository an einem festen Commit verschachtelt ist. Das übergeordnete Repo speichert einen Zeiger auf genau diesen Commit statt der Dateien des Submodules, sodass Mitarbeiter dieselbe Version auschecken. Es wird verwendet, um eine Abhängigkeit oder gemeinsam genutzte Komponente einzubinden, die ein eigenes Repo und eine eigene Historie hat.
Wie klone ich ein Repository mit Submodules?
Verwende
git clone --recurse-submodules <url>, um das übergeordnete Repo und alle seine Submodules in einem Schritt zu klonen. Wenn du bereits ohne dieses Flag geklont hast, führe anschließend git submodule update --init --recursive aus, um die Submodule-Ordner zu befüllen.Wie aktualisiere ich ein Submodule auf den neuesten Commit?
Führe
git submodule update --remote aus, was den verfolgten Branch jedes Submodules holt und es auf den neuesten Commit verschiebt. Committe dann die Änderung im übergeordneten Repo, da das Elternteil festhält, auf welchen Submodule-Commit es zeigt - das Update wird erst gespeichert, wenn du diesen Zeiger committest.Warum ist mein Submodule-Ordner nach dem Klonen leer?
Weil du ohne
--recurse-submodules geklont hast, sodass Git die Ordner erstellt, aber ihren Inhalt nicht geholt hat. Behebe es mit git submodule update --init --recursive, was jedes Submodule initialisiert und herunterlädt.Kann ich das online üben?
Ja. Öffne den Terminal-Playground, um
git submodule in einer echten Shell in deinem Browser auszuführen - nichts zu installieren. Coddys kostenloser interaktiver Git-Kurs behandelt auch die Repository-Einrichtung Schritt für Schritt.