如果检出的HEAD是主机的提示,则将子模块放在主分支上

时间:2014-03-10 16:20:49

标签: git branch git-submodules

当且仅当主要提示是签出提交时,是否可以签出每个子模块中的主分支?

如果这可以在一些钩子中,那将是很好的,所以我不必手动。

我需要这个的原因是我可以将更改后的子模块内容推送到原点和其他遥控器。

1 个答案:

答案 0 :(得分:1)

一般来说,您可以使用git-submodule foreach迭代地对每个子模块执行操作。你可以运行你的foreach,并做这样的事情来比较HEAD和master

$(git rev-parse --abbrev-ref HEAD) == $(git rev-parse --abbrev-ref master)

但是,您可能还有兴趣知道,通过在.gitmodules中定义更新属性,您可以告知子模块在更新时分离其HEAD。在.gitmodules中找到子模块相关的子模块,并在其下添加update = rebaseupdate = merge。这意味着当你进行子模块更新时,git将进入子模块,而不是直接检查提交(分离HEAD),它将执行pull或rebase。

文档有点过分,但请看一下子模块。$ name.update选项,--merge和--rebase更新标志,以及--branch标志。

https://www.kernel.org/pub/software/scm/git/docs/git-submodule.html