Menu
Coddy logo textTech

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.

Ein git submodule bettet ein anderes Repository in deins ein, festgepinnt auf genau einen Commit.

Syntax

CommandWhat it does
git submodule add <url> libs/xEin Repo als Submodule unter libs/x hinzufügen
git clone --recurse-submodules <url>Ein Repo und seine Submodules klonen
git submodule update --init --recursiveSubmodules nach einem einfachen Klon initialisieren und holen
git submodule update --remoteSubmodules auf ihren neuesten Commit aktualisieren
git submodule statusDen Commit jedes Submodules anzeigen

Häufige Fälle

GoalCommand
Ein Projekt klonen, das Submodules verwendetgit clone --recurse-submodules <url>
Submodules nach dem Klonen nachholengit submodule update --init --recursive
Ein Submodule auf den neuesten Stand bringengit 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.
Coddy programming languages illustration

Lerne Git mit Coddy

LOS GEHT'S