“git merge”中分支名称规范中的通配符

时间:2011-03-05 09:13:35

标签: git merge

在“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和另一个分支合并?

2 个答案:

答案 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