git 子模块分支会与主项目的分支一起切换吗?



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

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

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

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

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

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

最新更新