Estou tentando colocar um submódulo em um repositório. O problema é que, quando clono o repositório pai, a pasta do submódulo fica totalmente vazia.
Existe alguma maneira de fazê-lo para que git clone parent_repo
realmente coloque dados na pasta do submódulo?
Por exemplo, http://github.com/cwolves/sequelize/tree/master/lib/ , nodejs-mysql-native
está apontando para um submódulo git externo, mas quando eu faço o checkout do sequelize
projeto, essa pasta está vazia.
git
git-submodules
Marca
fonte
fonte
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 .Respostas:
Com a versão 2.13 do Git e posterior,
--recurse-submodules
pode ser usado em vez de--recursive
:Nota do editor:
-j8
é uma otimização de desempenho opcional que se tornou disponível na versão 2.8 e busca até 8 submódulos por vez em paralelo - consulteman git-clone
.Com a versão 1.9 do Git até a versão 2.12 (
-j
sinalizador disponível apenas na versão 2.8+):Com a versão 1.6.5 do Git e posterior, você pode usar:
Para repositórios já clonados ou versões mais antigas do Git, use:
fonte
master
?Você precisa fazer duas coisas antes que um submódulo seja preenchido:
fonte
git-submodule(1)
página do manual ( kernel.org/pub/software/scm/git/docs/git-submodule.html ). Você descobrirá quegit submodule update
suporta um bom parâmetro chamado--recursive
.git submodule update --init
(Veja também minha resposta ).Git 2.23 (terceiro trimestre de 2019): se você deseja clonar e atualizar os submódulos para a revisão mais recente:
Se você apenas deseja cloná-los no SHA1 gravado:
Ver abaixo.
Resposta original 2010
Como joschi menciona nos comentários,
git submodule
agora suporta a--recursive
opção (Git1.6.5 e mais).Consulte Trabalhando com submódulos git recursivamente para a parte init.
Veja
git submodule
explicado para mais.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:
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)Que significa:
fonte
git submodule update --init --recursive --remote
deve atualizá-los para o commit mais recente de sua respectiva ramificação. (ex: stackoverflow.com/a/56981834/6309 )clone --recurse-submodules --remote-submodules
nemsubmodule update --init --recursive --remote
) me permitiu buscar os sub-repositórios. Tudo o que recebo é um arquivo .gitmodules, e não consegui encontrar nenhuma maneira de iniciar os subrepos além de cloná-los manualmente, um por um. Eu gostaria de ter pelo menos um script para fazê-lo comsubmodule foreach
...[Resposta rápida]
Você pode usar este comando para clonar seu repositório com todos os submódulos:
Ou, se você já clonou o projeto, pode usar:
fonte
Se o seu submódulo foi adicionado a um ramo, inclua-o no comando clone ...
fonte
Tente o seguinte:
Ele puxa automaticamente os dados do submódulo, assumindo que você já adicionou os submódulos ao projeto pai.
fonte
--recurse-submodules
e--recursive
são aliases equivalentes .git submodule update --init --recursive
que foi explicado nesta respostaEu acho que você pode seguir 3 etapas:
fonte
Resposta atrasada
Como passei uma hora inteira brincando com um amigo: Mesmo se você tiver direitos de administrador no BitBucket, sempre clone o repositório ORIGINAL e use a senha de quem é o dono do repositório. É irritante descobrir que você encontrou esse minetrap: P
fonte
Tente isso para incluir submódulos no repositório git.
ou
fonte
Você pode usar o
--recursive
sinalizador ao clonar um repositório. Este parâmetro força o git a clonar todos os submódulos definidos no repositório.Após a clonagem, as ramificações do submódulo às vezes podem ser alteradas; portanto, execute este comando após:
fonte
[Resposta rápida]
Após a clonagem do repositório pai (que continha algum repositório de submódulo), faça o seguinte:
fonte
A busca paralela de submódulos visa reduzir o tempo necessário para buscar um repositório e todos os seus submódulos relacionados, permitindo a busca de vários repositórios de uma só vez. Isso pode ser feito usando a nova opção --jobs, por exemplo:
Segundo a equipe do Git, isso pode acelerar substancialmente a atualização de repositórios que contêm muitos submódulos. Ao usar --recurse-submodules sem a nova opção --jobs, o Git buscará os submodules um por um.
Fonte: http://www.infoq.com/news/2016/03/git28-released
fonte
Eu tive o mesmo problema para um repositório GitHub. Faltava à minha conta a chave SSH. O processo é
Em seguida, você pode clonar o repositório com submodules (
git clone --recursive YOUR-GIT-REPO-URL
)ou
Execute
git submodule init
egit submodule update
busque submódulos no repositório já clonado.fonte
Permission denied (publickey). fatal: Could not read from remote repository.
erroTente isso.
Se você adicionou o submódulo em uma ramificação, certifique-se de adicioná-lo ao comando clone.
fonte
Se for um novo projeto, basta fazer o seguinte:
Se já estiver instalado, então:
fonte