为所有Git子模块设置分支

时间:2015-01-13 16:36:40

标签: git git-submodules

是否有命令为所有现有 Git子模块设置相同的分支名称

git submodule add -b develop *

基本上我想要等待递归设置.gitmodules文件中每个模块的分支。

2 个答案:

答案 0 :(得分:1)

请参阅git submodule foreach

  

在每个签出的子模块中评估任意shell命令。

git submodule foreach git checkout -b develop

答案 1 :(得分:0)

  

寻找一种递归方式在.gitmodules文件中设置分支

使用Git 2.22(四年后的2019年第二季度),您将能够使用git submodule set-branch -b <abranch>,因为“ git submodule”会学习“ set-branch”子命令,该子命令允许 submodule.*.branch个设置需要修改。

请参见commit b57e811commit c89c494commit 7a4bb55(2019年2月8日)和Denton Liu (Denton-L)(2019年2月7日)。
(由Junio C Hamano -- gitster --commit 01f8d78中合并,2019年4月25日)

  

submodule:教导set-branch子命令

     

这教导了git-submodule set-branch子命令,该子命令允许   子模块的分支可以通过无瓷命令来设置   必须手动操作.gitmodules文件。

对于您的情况,对于所有子模块,请使用git submodule foreach

git submodule foreach 'git submodule set-branch --branch aBranch -- ${sm_path}'
git submodule foreach 'git submodule set-branch --default -- ${sm_path}'

(最后一行设置了“ master”分支which is the default


在Git 2.22之前,您将使用我在“ How can I specify a branch/tag when adding a Git submodule?”中提到的命令

 git submodule foreach 'git config -f .gitmodules submodule.${sm_path}.branch <branch>'