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 不感兴趣,因为引用总是添加到提交而不是分支。因此,子模块中的分支只会反映子模块的分支策略,不需要与封闭存储库的分支策略相匹配。
最近我了解了 git 子模块。它们似乎是自给自足的项目,拥有自己的 git 结构和分支。
当我切换主项目的分支时,是否也会切换子模块的分支? git 如何处理这种情况?
我最近遇到了 a similar question。 (我会让你阅读这个答案的内容,因为它为你提供了我的答案的背景)。
一个子模块只是一个 repo 的引用和这个 repo 中的一个提交。
当您切换分支时,引用可能会改变(如果您要切换到的分支使用不同的引用)但子机的文件系统将保持不变。
所以写 git status
会产生一个结果,表明您的子模块状态与当前 HEAD
中的不同。
要使子模块指向 HEAD
的正确提交,只需调用:
$ git submodule update
此外,您的子模块的 branch 对封闭的 repo 不感兴趣,因为引用总是添加到提交而不是分支。因此,子模块中的分支只会反映子模块的分支策略,不需要与封闭存储库的分支策略相匹配。