.gitmodules 和在 .git/config 中指定子模块之间的区别



可能非常愚蠢的问题,-但到目前为止,我一直在.gitmodules文件中指定子模块。最近我突然想到,也许出于同样的原因可以只使用 .git/config,这样我就不必在工作目录中保留多余的文件了?

.git/config :

[submodule "path/to/repo"]
    url = git@github.com:username/repo.git

.gitmodules

[submodule "path/to/repo"]
    path = path/to/repo
    url = git@github.com:username/repo.git

这些基本上是一回事吗?

相同的答案比 .git/info/exclude.gitignore .

.gitmodules文件可以包含在存储库中并与所有人共享(也就是说,它可以像任何常规文件一样添加和提交),而.git中的任何内容(如.git/config)都是私有的(您不能将其添加到存储库中)。

git submodule sync将使用 .gitmodules 文件中的详细信息更新您的配置文件,因此后者应被视为"主节点" - 如@Artefact2所述,它在存储库之间传递。

当子模块 URL 在上游更改并且您需要 相应地更新本地存储库。

最新更新