Git子模块 - 更改分支

问题描述 投票:1回答:1

我有一个关于git中子模块的问题:

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

我可以提交此更改,子模块指向分支“fancyFeature”上的提交。但是既然.gitmodules仍然指向开发,我总是有单独的头(至少这是我的解释)。有没有办法在没有分离头的情况下改变subrepo的分支?

谢谢你的帮助!

P.S .:如果我将.gitmodules改为“fancyFeature”,我就不会得到分离。这就是我的结论来自......

git git-branch git-submodules
1个回答
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来获取子模块分支并合并/ rebase / checkout此提交。

要创建分支,您可以迭代子模块,如

git submodule foreach 'git -B feature-branch || :`
© www.soinside.com 2019 - 2024. All rights reserved.