2011-03-05 86 views
4

在“git merge”中指定分支名称时,有可能以某种方式使用通配符?“git merge”中的分支名称规范中的通配符

举例来说,如果我有:

[email protected]:~/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和另一个分支合并?

回答

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 
2

git branch -r | grep "share" | xargs git merge

+0

最简单的单线解决方案! – 2017-05-04 09:38:57