git submodule 分支是否与主项目的分支一起切换?

Pau*_*aul 2 git git-submodules git-branch

最近我开始了解 git 子模块。它们似乎是自给自足的项目,拥有自己的 git 结构和分支。

当我切换主项目的分支时,这是否也会切换子模块的分支?git 如何处理这种情况?

Thi*_* D. 5

我最近遇到了一个类似的问题。(我会让你阅读这个答案的内容,因为它为你提供了我的答案的背景)。

子模块只是对 repo 的引用和此 repo 中的提交。
当您切换分支时,引用可能会更改(如果您要切换到的分支使用不同的引用),但 submobule 的文件系统将保持不变。
因此,写入git status将产生一个结果,表明您的子模块状态与您当前的HEAD.

要使子模块指向正确的提交HEAD,只需调用:

$ git submodule update 
Run Code Online (Sandbox Code Playgroud)

此外,您的子模块的分支对封闭的 repo 不感兴趣,因为引用总是添加到提交而不是分支。因此,子模块中的分支只会反映子模块的分支策略,不需要匹配封闭存储库的分支策略。