Pasta vazia do sub-módulo Git quando repo clonado

130

Eu tenho um repo hospedado em https://github.com/aikiframework/json . Na minha cópia local, adicionei um submódulo usando o comando

git submodule add [email protected]:jcubic/json-rpc.git json-rpc

Então fiz um commit e push e as alterações aparecem no GitHub (posso clicar nele). Mas quando eu clonar o repositório

git clone https://github.com/aikiframework/json.git

a pasta do submódulo json-rpc está vazia.

O que estou perdendo aqui? Eu esqueci alguma coisa? Por que essa pasta está vazia?

jcubic
fonte

Respostas:

200

OK, achei, necessário adicionar --recursiveao clonar o repositório.

Portanto, o comando clone termina como:

git clone https://github.com/aikiframework/json.git --recursive
jcubic
fonte
229
Sim. Você também pode buscar submódulos após o fato com git submodule update --init, se você já clonou, mas esqueceu --recursive.
Âmbar
4
Acabei de enfrentar o problema de que existe um submódulo no ramo de desenvolvimento, mas ainda não no ramo principal. Quando você clona o repositório git usando --recursive, ele não encontra o submódulo no ramo mestre e você deve buscá-lo usando o comentário do Ambers "git submodule update --init" para obter também o submódulo.
d4Rk
11
Se você usar git submodule update --initvocê terá que ir a cada repo e fazer git checkout masterde outra forma você obterá erros You are not currently on a branch.em git pullquando você tentar atualizá-lo para uma versão mais recente.
Noitidart 26/11/16
@Noitidart existe uma maneira de não fazer isso? (após clonagem do projecto já)
borgr
1
@ Noitidart Obrigado pela update --initdica. Isso ajuda quando o clone original não tinha --recursivenele e simplesmente queria puxar os submódulos ausentes.
Jari Turkia