git submodule foreach checkout supermodule branch

时间:2015-11-24 13:24:15

标签: git git-submodules

考虑一个git存储库Foo /,它有子模块bar1 /和bar2 /。

每个都有相同的分支:1& 2。

我输入超级模块,我想更新超级模块以包含bar1和bar2原点的最新提交。我已经初始化并更新了超级模块,因此bar1和bar2中有工作树,但它们处于分离状态。我可以做到以下几点:

cd foo;
git checkout 1
git submodule foreach git checkout 1
git pull

现在,让我烦恼的是重复分支标识符。我可以做一些类似“git submodule foreach git checkout $ CURRENT_BRANCH_ID”的内容吗?还有更好的选择吗?

1 个答案:

答案 0 :(得分:2)

子模块始终默认为in detached HEAD mode

您可以使每个子模块都遵循分支 请参阅" How to make an existing submodule track a branch"。

cd /path/to/your/parent/repo/Foo
git config -f .gitmodules submodule.bar1.branch branch1
git config -f .gitmodules submodule.bar2.branch branch2

然后您需要做的就是:

git submodule update --remote

这会将每个子模块更新为最新的上游分支(fetch + checkout)。