Git 2.23 (Q3 2019): Wenn Sie die Submodule klonen und auf die neueste Version aktualisieren möchten :
git clone --recurse-submodules --remote-submodules
Wenn Sie sie nur an ihrem aufgezeichneten SHA1 klonen möchten:
git clone --recurse-submodules
Siehe unten.
Ursprüngliche Antwort 2010
Wie Joschi in den Kommentaren erwähnt, git submodule
unterstützt jetzt die --recursive
Option (Git1.6.5 und mehr).
Wenn --recursive
angegeben, wird dieser Befehl in die registrierten Submodule zurückgeführt und alle darin enthaltenen verschachtelten Submodule aktualisiert.
Siehe rekursives Arbeiten mit Git-Submodulen für den Init-Teil.
Weitere git submodule
Informationen finden Sie unter Erläuterungen .
Ab Version 1.6.5 von git können Sie dies automatisch tun, indem Sie das Superprojekt mit der folgenden –-recursive
Option klonen :
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Update 2016 mit Git 2.8: Siehe " Wie kanngit clone --recursive
ich das Herunterladen von Git-Submodulen mithilfe von Git beschleunigen / parallelisieren ? "
Sie können das parallele Abrufen des Submoduls mithilfe mehrerer Threads starten.
Zum Beispiel:
git fetch --recurse-submodules -j2
Noch besser ist, dass Sie mit Git 2.23 (Q3 2019) das Submodul in einem Befehl klonen und in den Tracking-Zweig auschecken können!
Siehe Commit 4c69101 (19. Mai 2019) von Ben Avison ( bavison
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit 9476094 , 17. Juni 2019)
clone
: --remote-submodules
Flag hinzufügen
Bei der Verwendung git clone --recurse-submodules
gab es bisher keine Möglichkeit, einen --remote
Schalter an den impliziten git submodule update
Befehl für einen Anwendungsfall zu übergeben, in dem die Submodule in ihrem Remote-Tracking-Zweig ausgecheckt werden sollen, anstatt mit dem im Superprojekt aufgezeichneten SHA-1.
Dieser Patch behebt diese Situation.
Es geht tatsächlich --no-fetch
um git submodule update
auch auf dem Gelände sie das Submodul hat gerade erst geklont worden, so das Abrufen von der Fernbedienung wieder nur dazu dient, die Dinge verlangsamen.
Das bedeutet:
--[no-]remote-submodules:
Alle geklonten Submodule verwenden den Status des Fernverfolgungszweigs des Submoduls, um das Submodul zu aktualisieren, und nicht den aufgezeichneten SHA-1 des Superprojekts. Entspricht der Weitergabe --remote
an git submodule update
.
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23): Er klont und aktualisiert die Submodule in einem Befehl. Siehe meine bearbeitete Antwort unten .