Git 2.23 (Q3 2019): se vuoi clonare e aggiornare i sottomoduli alla loro ultima revisione:
git clone --recurse-submodules --remote-submodules
Se vuoi solo clonarli nel loro SHA1 registrato:
git clone --recurse-submodules
Vedi sotto.
Risposta originale 2010
Come menziona joschi nei commenti, git submodule
ora supporta l' --recursive
opzione (Git1.6.5 e altro).
Se --recursive
specificato, questo comando ricercherà nei sottomoduli registrati e aggiornerà tutti i sottomoduli annidati all'interno.
Vedi Lavorare con i sottomoduli git in modo ricorsivo per la parte init.
Vedi git submodule
spiegato di più.
Con la versione 1.6.5 di git e successive, puoi farlo automaticamente clonando il super-progetto con l' –-recursive
opzione:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Aggiornamento 2016, con git 2.8: vedi " Come velocizzare / parallelizzare i download dei sottomoduli git usando git clone --recursive
? "
È possibile avviare il recupero del sottomodulo utilizzando più thread, in parallelo.
Per esempio:
git fetch --recurse-submodules -j2
Ancora meglio, con Git 2.23 (3 ° trimestre 2019), puoi clonare ed effettuare il checkout del sottomodulo nel loro ramo di tracciamento in un solo comando!
Vedi commit 4c69101 (19 maggio 2019) di Ben Avison ( bavison
) .
(Unito da Junio C Hamano - gitster
- in commit 9476094 , 17 giugno 2019)
clone
: aggiungi --remote-submodules
flag
Quando si utilizzava, in git clone --recurse-submodules
precedenza non esisteva alcun modo per passare un --remote
passaggio al git submodule update
comando implicito per qualsiasi caso d'uso in cui si desidera eseguire il checkout dei sottomoduli sul ramo di tracciamento remoto anziché con SHA-1 registrato nel superprogetto.
Questa patch corregge questa situazione.
In realtà passa --no-fetch
per git submodule update
così per i motivi che sottomodulo è appena stato clonato, così recupero dal telecomando nuovamente serve solo a rallentare le cose.
Questo significa:
--[no-]remote-submodules:
Tutti i sottomoduli che vengono clonati useranno lo stato del ramo di tracciamento remoto del sottomodulo per aggiornare il sottomodulo, piuttosto che lo SHA-1 registrato del superprogetto. Equivale a passare --remote
a git submodule update
.
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23): clonerà e aggiornerà i sottomoduli in un solo comando. Vedi la mia risposta modificata di seguito .