Git 2.23 (terceiro trimestre de 2019): se você deseja clonar e atualizar os submódulos para a revisão mais recente:
git clone --recurse-submodules --remote-submodules
Se você apenas deseja cloná-los no SHA1 gravado:
git clone --recurse-submodules
Ver abaixo.
Resposta original 2010
Como joschi menciona nos comentários, git submodule
agora suporta a --recursive
opção (Git1.6.5 e mais).
Se --recursive
for especificado, esse comando recursará nos submódulos registrados e atualizará todos os submódulos aninhados.
Consulte Trabalhando com submódulos git recursivamente para a parte init.
Veja git submodule
explicado para mais.
Com a versão 1.6.5 do git e posterior, você pode fazer isso automaticamente clonando o superprojeto com a –-recursive
opção:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Atualização 2016, com git 2.8: consulte " Como acelerar / paralelizar downloads de submódulos git usando git clone --recursive
? "
Você pode iniciar a busca do submódulo usando vários threads, em paralelo.
Para instâncias:
git fetch --recurse-submodules -j2
Melhor ainda, com o Git 2.23 (terceiro trimestre de 2019), você pode clonar e fazer check-out do submódulo para sua ramificação de rastreamento em um comando!
Veja commit 4c69101 (19 de maio de 2019) de Ben Avison ( bavison
) .
(Incorporado por Junio C Hamano - gitster
- in commit 9476094 , 17 jun 2019)
clone
: adicionar --remote-submodules
sinalizador
Ao usar git clone --recurse-submodules
, anteriormente, não havia maneira de passar uma --remote
opção para o git submodule update
comando implícito para qualquer caso de uso em que você deseja que os submódulos sejam retirados em sua ramificação de rastreamento remoto, em vez de com o SHA-1 registrado no superprojeto.
Este patch corrige essa situação.
Na verdade, ele também passa --no-fetch
com git submodule update
o argumento de que o submódulo acabou de ser clonado, portanto, buscar no controle remoto novamente serve apenas para desacelerar as coisas.
Que significa:
--[no-]remote-submodules:
Todos os submódulos clonados usarão o status da ramificação de rastreamento remoto do submódulo para atualizar o submódulo, em vez do SHA-1 registrado do superprojeto. Equivalente a passar --remote
para git submodule update
.
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23): clonará e atualizará os submódulos em um comando. Veja minha resposta editada abaixo .