最近我开始了解 git 子模块。它们似乎是具有自己的 git 结构和分支的自给自足的项目。
当我切换主项目的分支时,是否也会切换子模块的分支? git 是如何处理这种情况的?
最佳答案
我最近遇到了 a similar question . (我会让你阅读这个答案的内容,因为它为你提供了我的答案的背景)。
一个子模块只是一个 repo 的引用和这个 repo 中的一个提交。
当您切换分支时,引用可能会改变(如果您要切换到的分支使用不同的引用)但子移动的文件系统将保持不变。
因此,编写 git status
将产生一个结果,表明您的子模块状态与当前 HEAD
中的状态不同。
要使子模块指向 HEAD
的正确提交,只需调用:
$ git submodule update
此外,您的子模块的分支对于封闭的仓库来说并不重要,因为引用总是被添加到提交而不是分支。因此,子模块中的分支只会反射(reflect)子模块的分支策略,不需要与封闭存储库的分支策略相匹配。
关于git - git子模块分支是否与主项目的分支一起切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40219209/