É possível que um submódulo git seja feito de vários outros submódulos git e o repositório super git busque o conteúdo de cada submódulo?
Eu tentei fazer isso usando a abordagem óbvia / ingênua de criar um repositório git contendo vários submódulos.
Em seguida, adicione esse repositório git a outro repositório git como um submódulo.
Em seguida, tente extrair do diretório raiz do repositório super git git submodule init
e então git submodule update
. Mas isso falha ao buscar os submódulos.
git
git-submodules
firstresponder
fonte
fonte
Respostas:
Como mencionado em Retrospectivamente, adicione --recursive a um repositório git
Deveria trabalhar.
fonte
git submodule init; git submodule update --recursive
era sinônimo do que foi dito acima, mas não é.--init
bandeira, os submódulos, dentro de um dos meus submódulos, são inicializados em versões antigas, não nas mais atuais.git submodule foreach git pull origin master
, e funciona parcialmente: os submódulos são atualizados, mas às vezesHEAD
são desanexados e, para submódulos nos submódulos, não consigo confirmar as alterações do meu submódulo direto porque ele tem "conteúdo modificado" e não "novos commit" (pois seus próprios submódulos têm "novas confirmações" e são atualizadas).Como Sridhar comenta abaixo, do Git1.6.5 +,
git clone --recursive
agora é a alternativa oficial, descrita em:git clone --submodule
"--recursive
a um repositório git "(com o
alias $ git config --global alias.cloner = 'clone --recursive'
, que evita sombrear ogit clone
comando normal )inamiy indica corretamente o
git submodule update --init --recursive
comando, introduzido no commit b13fd5c , novamente no git1.6.5, de Johan Herland (jherland
) .E o IceFire acrescenta nos comentários :
(resposta original mais antiga)
De acordo com a página do manual
deve atualizar todos os submódulos aninhados. Mas a parte init pode não ser recursiva.
Dependendo da sua versão do Git, você pode recorrer a uma abordagem mais "scripting", com este artigo Atualizando recursivamente os submódulos do Git, que permite a inicialização e atualização recursivas:
fonte
git clone --recursive
suficiente?git submodule update --init <submoduleName>
é o caminho a seguir; Eu cheguei aqui ao procurar por esta resposta