git 子模块同步命令 - 它有什么用?

git submodule sync command - what is it for?

我不明白 documentation git submodule sync 的作用。请解释。

Git 在两个地方存储有关子模块的信息。第一个位于名为 .gitmodules 的文件中,该文件已签入 git 存储库。对此文件的更改会传播到其他存储库。

另一个位置在 .git/config,这是 git 执行大多数命令时实际看到的地方。

所以假设您已经在一个项目上工作了一段时间,并且有一个名为 foo 的子模块。这个子模块的文件是从一些 url 检出的,从哪里检出并不重要。然而,在某些时候,这个 url 会发生变化。也许它会发生变化,以便从不同的服务器或不同的路径或其他任何地方检出子模块。当您更新存储库时,您的 .gitmodules 文件副本将被更新,但不会更新您的 .git/config 文件;您仍然会从旧 url 结账。当您想从新的 url 开始签出时,您可以 运行 git submodule sync 将新配置从 .gitmodules 复制到 .git/config。 Git 不会自动执行此操作,因为您可能已经对配置进行了自己的更改,并且它不想覆盖它们。