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 git@github.com: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?

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.