2014-11-03 63 views
2

我有以下的Git分支用於遍歷所有的Git分支與某些名字

foo 
bar 
foobar 
feature/foo 
feature/bar 
feature/buzz 

你會如何for循環做了以單詞「功能/」開頭的分支?

當我嘗試以下操作時,它奇怪地打印出不僅僅是git分支。

for i in $(git branch --list "feature/*"); do echo $i; done; 
stuff.txt 
icon.jpg 
morestuff.txt 
Vagrantfile 
feature/foo 
feature/bar 
feature/buzz 
+0

[如何使用bash腳本遍歷所有git分支](http://stackoverflow.com/questions/3846380/how-to-iterate-through-all-git-branches-using-bash-script) – pihentagy 2016-08-24 12:19:13

回答

7

「我們積極勸阻不要使用任何瓷命令,其中包括git的分支,在腳本」的 - 從Git Maintainer's Blog

你想使用類似

git for-each-ref --format='%(refname:short)' refs/heads/feature/

這將正常工作內for br in $()構建

1

您可以使用shell(bash)的過濾分支,例如:

git branch | while read branch; do [[ $branch = feature/* ]] && echo $branch; done 

另一種方式:

git branch | grep ^feature/ | while read branch; do echo $branch; done 

這有點短,但它使用一個額外的過程(grep),而[[ ... ]]這是一個bash內建。 (另一方面,如果你只是想打印清單,那麼你可以在這個例子中省略while循環,在這種情況下,這個版本比第一個版本短得多。)