在"git merge"中指定分支名称时是否可能以某种方式使用通配符?
例如,如果我有:
sbos@malta:~/tmp/texterra$ git branch -r
origin/HEAD -> origin/master
origin/master
origin/share/branch1
origin/share/branch2
origin/share/another-branch
Run Code Online (Sandbox Code Playgroud)
我可不可以做:
git merge origin/share/*
Run Code Online (Sandbox Code Playgroud)
与branch1,branch2和另一个分支合并?
我认为你不能以这种方式直接使用通配符,但你可以使用git for-each-ref
匹配分支名称.例如,查看输出:
git for-each-ref --format="%(refname)" refs/remotes/origin/share/*bran*
Run Code Online (Sandbox Code Playgroud)
(这种模式的故意比你需要的更多,所以我可以证明通配符是有效的.你可以refs/remotes/origin/share/
改为.)
所以,作为一个命令你可以做:
git merge $(git for-each-ref --format="%(refname)" refs/remotes/origin/share/)
Run Code Online (Sandbox Code Playgroud)
...从所有这些分支进行章鱼合并.
说实话,我发现我很难想到一个我不太喜欢的情况:
git merge origin/share/branch1
git merge origin/share/branch2
git merge origin/share/another-branch
Run Code Online (Sandbox Code Playgroud)
......或者如果有很多分支:
for c in $(git for-each-ref --format="%(refname)" refs/remotes/origin/share/)
do
git merge $c || break
done
Run Code Online (Sandbox Code Playgroud)