[当我们在工作中切换主机时更新Git子模块路径时,我惊讶地发现路径存储在.gitmodules和.git / config文件中。
这背后的想法/原因是什么?
.gitmodules
文件随存储库一起提供,并指定在克隆存储库时要使用的位置。但是,.git/config
用于存储希望用于给定实例的值。
当您希望使用与配置中指定的URL不同的URL时,此方法很有用。例如,您可能具有子模块的内部镜像,或者您可能希望使用SSH而不是HTTPS。这也意味着除非在初始克隆期间,否则不需要存储库的内容,因此您不必担心来自不受信任的fork的git pull
或git checkout
会修改您的配置,并且.gitmodules
上的合并冲突不会影响子模块操作。
此外,Git的安全模型不允许使用不受信任的配置文件:可以修改存储库配置的人员可以执行任意代码。通过仅复制特定的配置设置并且仅复制一次,Git可以避免必须使用特殊代码才能从工作树中仅读取经过清理的条目。
如果要同步它们,则可以使用git submodule sync
进行同步。