我不理解从文档中看到的
git submodule sync
是什么意思。请解释一下。Git将子模块的信息存储在两个位置。第一个位置是在名为.gitmodules
的文件中,该文件被检入到Git仓库中。该文件的更改会传播到其他仓库。
另一个位置是在.git/config
中,大多数命令执行时Git实际上会查找这个位置。
假设你已经在项目上工作了一段时间,有一个名为foo
的子模块。该子模块的文件从某个url检出,无论它在哪里都不重要。然而,在某个时刻,该url发生了变化。也许它发生了变化,以便从不同的服务器或不同的路径检出该子模块。当你更新你的仓库时,你的.gitmodules
文件将被更新,但是你的.git/config
文件不会被更新;你仍然从旧的url检出。当你想从新的url开始检出时,你需要运行git submodule sync
命令,将.gitmodules
中的新配置复制到.git/config
中。Git不会自动执行此操作,因为你可能对自己的配置进行了修改,它不想覆盖它们。
.gitmodules
中的链接,为什么不在.git/config
中也手动更改相同的内容呢?或者有没有一种命令可以在两个地方同时更改? - Narekgit submodule add
之外,没有任何命令可以同时更改两者,该命令可用于添加新的子模块,但无法更改现有的子模块。 - db48x