git 子模块分支是否随主项目的分支一起切换?

Does git submodule branch switch along with main project's branch?

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

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

我最近遇到了 a similar question。 (我会让你阅读这个答案的内容,因为它为你提供了我的答案的背景)。

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

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

$ git submodule update 

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