为什么Git会在两个地方存储子模块URL?

问题描述 投票:0回答:1

[当我们在工作中切换主机时更新Git子模块路径时,我惊讶地发现路径存储在.gitmodules和.git / config文件中。

这背后的想法/原因是什么?

git git-submodules git-config
1个回答
0
投票

.gitmodules文件随存储库一起提供,并指定在克隆存储库时要使用的位置。但是,.git/config用于存储希望用于给定实例的值。

当您希望使用与配置中指定的URL不同的URL时,此方法很有用。例如,您可能具有子模块的内部镜像,或者您可能希望使用SSH而不是HTTPS。这也意味着除非在初始克隆期间,否则不需要存储库的内容,因此您不必担心来自不受信任的fork的git pullgit checkout会修改您的配置,并且.gitmodules上的合并冲突不会影响子模块操作。

此外,Git的安全模型不允许使用不受信任的配置文件:可以修改存储库配置的人员可以执行任意代码。通过仅复制特定的配置设置并且仅复制一次,Git可以避免必须使用特殊代码才能从工作树中仅读取经过清理的条目。

如果要同步它们,则可以使用git submodule sync进行同步。

© www.soinside.com 2019 - 2024. All rights reserved.