在“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
我可以这样做:
git merge origin/share/*
与branch1,branch2和另一个分支合并?
答案 0 :(得分:9)
我认为您不能以这种方式直接使用通配符,但您可以使用git for-each-ref
来匹配分支名称。例如,查看输出:
git for-each-ref --format="%(refname)" refs/remotes/origin/share/*bran*
(在模式中故意比你需要的更多,所以我可以证明通配符有效。你可以改为refs/remotes/origin/share/
。)
所以,你可以做一个命令:
git merge $(git for-each-ref --format="%(refname)" refs/remotes/origin/share/)
...从所有这些分支进行章鱼合并。
说实话,我觉得很难想到一个我不太喜欢的情况:
git merge origin/share/branch1
git merge origin/share/branch2
git merge origin/share/another-branch
......或者如果有批次的分支机构:
for c in $(git for-each-ref --format="%(refname)" refs/remotes/origin/share/)
do
git merge $c || break
done
答案 1 :(得分:3)
git branch -r | grep "share" | xargs git merge
?