从文档中我不明白git submodule sync
的作用。请解释一下。
Git将子模块的信息存储在两个地方。第一个是在一个名为.gitmodules
的文件中,该文件被签入git存储库。对该文件的更改会传播到其他存储库。
另一个位置在.git/config
中,git在执行大多数命令时实际会在这里查找。
想象一下,你已经在一个项目上工作了一段时间,有一个子模块叫foo
。这个子模块的文件是从某个url中签出的,在哪里并不重要。然而,在某个时刻,这个url会发生变化。也许它发生了变化,使得子模块从不同的服务器、不同的路径或其他什么地方签出。更新存储库时,会更新.gitmodules
文件的副本,但不会更新.git/config
文件;你仍然可以从旧的url中结账。当您想从新url开始签出时,您可以运行git submodule sync
将新配置从.gitmodules
复制到.git/config
。Git不会自动做到这一点,因为你可能已经对配置进行了自己的更改,而且它不想覆盖它们。