问题描述
是否有一个命令为所有现有的 Git子模块设置相同的分支名称
Is there a command to set the same branch name for all existing Git Submodules
git submodule add -b develop *
基本上,我需要一种方法来递归地为.gitmodules
文件中的每个模块设置分支.
Basically I need a way to recursively set the branch for each module in the .gitmodules
file.
推荐答案
在Git 2.22(四年后的2019年第二季度)中,您将能够使用git submodule set-branch -b <abranch>
,因为"git submodule
"会学习"set-branch
"子命令,该子命令允许submodule.*.branch
要修改的设置.
With Git 2.22 (Q2 2019, four years later), you will be able to use git submodule set-branch -b <abranch>
, because "git submodule
" learns "set-branch
" subcommand that allows thesubmodule.*.branch
settings to be modified.
请参见提交b57e811 ,提交c89c494 (2019年2月8日)和提交7a4bb55 (2019年2月7日),由 Denton Liu(Denton-L
).
See commit b57e811, commit c89c494 (08 Feb 2019), and commit 7a4bb55 (07 Feb 2019) by Denton Liu (Denton-L
).
对于您的情况,对于所有子模块,请使用 git submodule foreach
:
In your case, for all submodules, using 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
分支,这是默认)
(the last line set the 'master
' branch, which is the default)
在Git 2.22之前,您将使用在添加Git子模块时如何指定分支/标记的命令. "
Before Git 2.22, you would use the command I mentioned in "How can I specify a branch/tag when adding a Git submodule?"
git submodule foreach 'git config -f .gitmodules submodule.${sm_path}.branch <branch>'
注意:Git 2.24(2019年第四季度)明确说明--default
和--branch
选项是互斥的.
Note: Git 2.24 (Q4 2019) makes clear the --default
and --branch
options are mutually exclusive.
请参见提交40e747e (2019年9月16日): //github.com/Denton-L"rel =" noreferrer>刘登顿(Denton-L
).
See commit 40e747e (16 Sep 2019) by Denton Liu (Denton-L
).
这篇关于设置所有Git子模块的分支的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!