设置所有Git子模块的分支

Dar*_*Var 3 git git-submodules

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

git submodule add -b develop *
Run Code Online (Sandbox Code Playgroud)

基本上,我需要一种方法来递归设置.gitmodules文件中每个模块的分支。

Von*_*onC 6

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

使用Git 2.22(四年后的2019年第二季度),您将可以使用git submodule set-branch -b <abranch>,因为“ git submodule”学习“ set-branch”子命令 submodule.*.branch可以修改设置。

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

submodule:教set-branch子命令

这教导git-submoduleset-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}'
Run Code Online (Sandbox Code Playgroud)

(最后一行设置了' master'分支,这是默认值


在Git 2.22之前,您将使用我在“ 添加Git子模块时如何指定分支/标签? ”中提到的命令

 git submodule foreach 'git config -f .gitmodules submodule.${sm_path}.branch <branch>'
Run Code Online (Sandbox Code Playgroud)

注意:Git 2.24(Q4 2019)明确了--default--branch选项是互斥的。

参见Denton Liu()的commit 40e747e(2019年9月16日(由Junio C Hamano合并--7f17913号提交中,2019年10月7日)Denton-L
gitster


Jiř*_*šil 4

git submodule foreach

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

git submodule foreach git checkout -b develop
Run Code Online (Sandbox Code Playgroud)