2011-03-05 81 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