原始.gitmodules
文件使用硬编码https
网址,但对于我从ssh
克隆的一些自动测试,并使子模块网址与../ModuleName
相关。我不想将这些变化推回回购。如何在本地更改git子模块url?
# change the https://github.com/ with [email protected]:
sed -i 's/https:\/\/github.com\//[email protected]:/g' ".git/config"
# delete the url lines from the submodule blocks of .git/config
sed -i '/submodule/ {$!N;d;}' ".git/config"
# change hardcoded https:// urls of submodules to relative ones
sed -i 's/https:\/\/github.com\/ProjName/../g' ".gitmodules"
# also make the same change in the .git/modules/*/config
sed -i 's/https:\/\/github.com\/ProjName/../g' .git/modules/*/config
# sync and update
git submodule sync
git submodule update --init --recursive --remote
上面的代码片断,它做我想要的。然而,令人讨厌的是,.git/modules/
文件夹似乎不受版本控制,但如果我只是删除它,git submodule sync
和大多数其他Git操作就停止工作。
有没有办法在修改.gitmodules
和.git/config
文件后重新生成.git/modules
?
是的,这个回答我原来的问题,并非常感谢你。作为一个稍微不同的问题,有没有办法重新创建'.git/modules'文件夹?因为一旦创建它,如果我手动删除它,那么几乎所有的git命令都会从这一点开始感到不安。 –
@abdus_salam可能的解决方案[here](// stackoverflow.com/a/36983168/2747593)。 –