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

Sta*_*ann 25 git

可能非常愚蠢的问题, - 但我一直在.gitmodules文件中指定子模块.最近让我感到震惊的是,也许有可能只是因为同样的原因使用.git/config,所以我不必在工作目录中保留无关的文件?

.git/config:

[submodule "path/to/repo"]
    url = git@github.com:username/repo.git
Run Code Online (Sandbox Code Playgroud)

.gitmodules

[submodule "path/to/repo"]
    path = path/to/repo
    url = git@github.com:username/repo.git
Run Code Online (Sandbox Code Playgroud)

这些基本上是一样的吗?

Art*_*ct2 26

答案比.git/info/exclude.gitignore.

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

  • 如果我在.git/config和.gitmodules中指定了不同的repos - 哪一个优先? (6认同)

Phi*_*ley 13

git submodule sync将更新从.gitmodules文件的细节您的配置文件,因此后者应被视为"主" -它由@ Artefact2规定回购之间传递.

当子模块URL更改上游并且您需要相应地更新本地存储库时,这非常有用.

  • 对于`sync`子命令,优先使用.gitmodules,但请参阅手册,了解有关未在config中列出的那些条件的额外条件. (3认同)