Git submdule-更改限制

时间:2019-03-18 23:08:46

标签: git git-branch git-submodules

我对git中的子模块有疑问:

我有一个带有子模块“ A”的存储库“ SuperRepo”。子模块“ A”指向.gitmodules中的分支“ develop”。 如果我在“ SuperRepo”中创建一个新分支,假设“ fancyFeature”,有时我会将子模块“ A”的分支更改为具有相同名称的新分支。并非总是如此,但有时。

我可以提交此更改,并且子模块指向分支“ fancyFeature”上的提交。但是由于.gitmodules仍然指向开发领域,所以我总是有独立的头(至少这是我的解释)。有没有办法改变子仓库的分支而又没有头?

感谢您的帮助!

P.S .:如果将.gitmodules更改为“ fancyFeature”,则不会出现分离头的情况。那就是我的结论来自...

1 个答案:

答案 0 :(得分:0)

git子模块默认情况下使用分离的HEAD,并且不直接支持更改它。

但是您可以:

  • submodule.XXX.branch(在.gitmodules中)设置为分支

  • 使用

    转到该分支的HEAD
    git submodule update
    

    此命令默认暗含--checkout

  • 手动创建分支并使用

    git submodule update --rebase
    git submodule update --merge
    

    这将保留您的分支。

您可以通过将submodule.XXX.update设置为rebasemergecheckout来覆盖默认更新方法。

您可以添加--remote来获取子模块分支并合并/变基/签出此提交。

要创建分支,您可以遍历子模块,例如

git submodule foreach 'git -B feature-branch || :`