Git子模块的麻烦 - 改变底层的回购地址

时间:2013-03-05 03:25:30

标签: git git-submodules

我有一个项目,我将git子模块添加到过期的repo的fork中。我决定将子模块引用更改为指向原始仓库,而不是指向该分支。

我修改了.gitmodules文件以反映新参考文件并运行git submodule initgit submodule update --recursive但是没有效果,我在这里错过了一步吗?

1 个答案:

答案 0 :(得分:1)

neevek mentions .git/config以及git config的文档证实:

submodule..path submodule..url submodule..update

  

此项目中的路径,URL和子模块的更新策略   这些变量最初由git submodule init填充; 修改它们以覆盖.gitmodules文件中的网址和其他值。

所以:

  • 仅仅更改.gitmodules中的值是不够的(.git/config中的网址将具有优先权。)
  • git submodule init,正如文档中提到的那样,不会改变.git/config 中的现有信息(这也解释了为什么您的命令没有任何明显效果)。 /> 然后,您可以在.git/config中为您的本地设置自定义子模块克隆网址,然后继续git submodule update

我个人认为这个网址重复有点令人困惑......