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 submoduleunterstützt jetzt die --recursiveOption (Git1.6.5 und mehr).
Wenn --recursiveangegeben, 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 submoduleInformationen 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 –-recursiveOption 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-submodulesFlag hinzufügen
Bei der Verwendung git clone --recurse-submodulesgab es bisher keine Möglichkeit, einen --remoteSchalter an den impliziten git submodule updateBefehl 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-fetchum git submodule updateauch 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 --remotean 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 .