Na verdade, estou tentando aprender a usar o git, incluindo os git submodule
subcomandos. Já configurei um servidor no qual posso hospedar, enviar e enviar repositórios git usando SSH. Eu criei um repositório principal do git "Travail" neste servidor no qual gostaria de colocar todos os meus projetos como submódulos.
No meu repositório Travail, eu já adicionei um projeto meu como um submódulo em tools/libft
: Sou capaz de desenvolver esse submódulo, empurrá-lo e puxá-lo.
Mas quando tento adicionar outro submódulo (chamado fdf, de fdf.git no meu servidor), recebo o seguinte problema:
git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf
Um diretório git para 'projets / fdf' é encontrado localmente com remote (s): origin ssh: //[email protected]: XXXXX / opt / git / fdf.git Se você deseja reutilizar este git local diretório em vez de clonar novamente de ssh: //XXX.XXX.XXX.XXX: XXXXX / opt / git / fdf.git, use a opção '--force'. Se o diretório git local não for o repositório correto ou você não tiver certeza do que isso significa, escolha outro nome com a opção '--name'.
Na verdade, não há subdiretório no projets/
Li em outro thread que eu deveria usar git submodule sync
ou editar o arquivo .gitmodules no qual a URL do repositório de origem do meu submódulo poderia ter sido alterada.
Mas meu arquivo .gitmodules contém apenas as informações sobre meu primeiro submódulo (tools / libft), não sobre projets / fdf:
[submodule "tools/libft"]
path = tools/libft
url = ssh://[email protected]:XXXXX/opt/git/libft.git
Como estudante francês, eu poderia ter perdido alguma coisa na documentação em inglês que tenho, mas procurei e realmente não entendo por que recebo esse problema.
Ficaria feliz em obter uma solução, mas apenas uma explicação também seria útil.
fonte
/Travail/.git/modules/projets/
e encontrei umfdf
diretório. Parece não estar na árvore de trabalho, mas em confirmações mais antigas. Isso poderia gerar o problema?Respostas:
Eu vim para este post do SO tentando adicionar um submódulo com o mesmo caminho que um submódulo que eu excluí recentemente.
Isto é o que funcionou para mim ( este artigo ajudou muito ):
Se você ainda não correu
git rm --cached path_to_submodule
(sem barra)rm -rf path_to_submodule
, faça isso!Então:
Exclua as linhas relevantes do
.gitmodules
arquivo. por exemplo, exclua estes:[submodule "path_to_submodule"] path = path_to_submodule url = https://github.com/path_to_submodule
Exclua a seção relevante de .git / config. por exemplo, exclua estes:
[submodule "path_to_submodule"] url = https://github.com/path_to_submodule
rm -rf .git/modules/path_to_submodule
Então, você pode finalmente:
git submodule add https://github.com/path_to_submodule
fonte
git rm
erm -rf
etapas.).git/modules
e acabei trabalhando.Eu tentei a solução do jbmilgrom, especificamente eu tentei
git rm --cache
e isso não funcionou para mim, pois o diretório / submódulo não estava lá. O que funcionou para mim foi:rm -rf .git/modules/blah
git submodule add git://path.to.new
Eu fiz isso depois de tentar
--force
dentro dosgit submodule
comandos e derm
todos os outros diretórios, pressionando para dominar etc ... o diretório não existia e não havia razão para o cache. Acontece.git/modules
que é onde esse erro estava.fonte
Você pode ter excluído o seu
'projets/fdf'
disco, mas seu repositório Git ainda o possui. Usegit rm -rf projets/fdf
para removê-lo do Git e confirme as alterações. Depois disso, você poderá adicionar esta pasta como um submódulo.fonte
/tmp/repo
, executegit submodule add ../otherrepo.git
, e verá que a/tmp/repo/.git/modules/otherrepo
pasta existe. Esse era o problema para mim. Excluí manualmente essa pasta do .git e tudo funcionou.Se você já excluiu o diretório do submódulo, como eu fiz, siga as demais instruções do jbmilgrom. A chave é
rm -rf .git/modules/path_to_submodule
apenas ir em frente e fazer backup de todo o diretório de repositório pai primeiro .Se você tivesse apenas um submódulo, basta excluir
.gitmodules
fonte
Esses dois comandos funcionam para mim.
fonte
.git/modules/
. Existe uma pasta que armazena o repositório para o submódulo. A exclusão desse repositório corrigiu o problema para mim, enquanto a resposta aceita não.