考虑一个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”的内容吗?还有更好的选择吗?
答案 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)。