Eu criei um repositório git com um submódulo nele. Sou capaz de dizer ao próprio submódulo para alterar o caminho do repositório remoto, mas não sei como informar ao repositório pai como alterar o caminho do repositório remoto para o submódulo.
Eu não ficaria surpreso se eu estivesse um pouco sem sorte e tivesse que fazer as coisas manualmente, pois nem mesmo excluir sub-módulos é fácil.
git
git-submodules
Andrew Grimm
fonte
fonte
git submodule set-url [--] <path> <newurl>
Respostas:
Você deve poder editar o
.gitmodules
arquivo para atualizar a URL e, em seguida, executargit submodule sync
para refletir essa alteração no superprojeto e na sua cópia de trabalho.fonte
git submodule foreach -q git config remote.origin.url
para ver "reais" urls submódulo.git/config
para mim usando o git 2.1.0. Eu tive que atualizar os dois manualmente.gitmodules
e.git/config
antes de executar umgit submodule sync --recursive
para atualizar meu submódulo remoto.git submodule update --init --recursive --remote
qual realmente muda o repositório para o novo controle remotoEsses comandos farão o trabalho no prompt de comando sem alterar nenhum arquivo no repositório local
Veja as capturas de tela do blog: Alterando a URL / ramificação dos sub-módulos do GIT para outra URL / ramificação do mesmo repositório
fonte
git add .gitmodules
git commit -m "modified submodule URL"
git push origin master
Em termos simples, você só precisa editar o arquivo .gitmodules, ressincronizar e atualizar:
Edite o arquivo, através de um comando git ou diretamente:
ou apenas:
ressincronize e atualize:
fonte
git submodule update --init
funcionou para mim,--remote
parece amarrá-lo à cabeça do repo remoto.Com o Git 2.25 (primeiro trimestre de 2020), você pode modificá- lo.
Consulte " URL do sub-módulo Git alterado " e o novo comando
Resposta original (maio de 2009, dez anos atrás)
Na verdade, um patch foi enviado em abril de 2009 para esclarecer a
gitmodule
função.Portanto, agora a documentação do gitmodule ainda não inclui:
Isso praticamente confirma a resposta de Jim .
Se você seguir este tutorial do submódulo git , verá que precisa de um "
git submodule init
" para adicionar os URLs do repositório do submódulo a .git / config."
git submodule sync
" foi adicionado em agosto de 2008 precisamente para facilitar essa tarefa quando o URL é alterado (especialmente se o número de submódulos for importante).O script associado a esse comando é direto o suficiente:
O objetivo permanece:
git config remote."$remote".url "$url"
fonte
.git/config
fazendo:git config submodule."$submodule_name".url "$new_url"
que também é descrito aqui .git submodule set-url [--] <path> <newurl>
fazem?O que funcionou para mim (no Windows, usando a versão 1.8.3.msysgit.0 do git):
git submodule init
egit submodule update
Depois de fazer tudo isso, tudo está no estado que eu esperaria. Eu imagino que outros usuários do repositório terão problemas semelhantes quando atualizarem - seria sensato explicar essas etapas na sua mensagem de confirmação!
fonte
git submodule update
. Seguir as outras respostas não mudaria o que estava no./git/modules/external
diretório, portanto, tentar atualizar resultaria em ainda puxando o URL incorreto.Apenas edite seu arquivo .git / config . Por exemplo; se você tem um submódulo "comum", você pode fazer isso no super-módulo:
fonte
git config --file=.gitmodules -e
abre o editor padrão no qual você pode atualizar o caminhofonte