对开头的元素执行grep将不起作用

时间:2017-05-24 12:29:56

标签: git grep

我有git分支,一些以“fix-”开头,另一些以“hotfix-”开头。我想只列出以“fix-”开头的那些。为此我尝试使用:git branch | grep ^fix但这不会产生任何输出。如果我git branch | grep fix我得到了所有的分支。看起来好像在我的分支名称之前还有其他一些看不见的字符,或者我不知道......你能帮助我吗?

3 个答案:

答案 0 :(得分:1)

没有不可见的字符,但可能有一些可见的字符(如当前分支上的*,以及其他分支上的空格,使列整齐排列。

因此,一种选择是使用像^..fix这样的模式;但是你在这里处于灰色地带,使用脚本技术来解析对一个人来说意味着的输出。

另一个选择是使用branch命令中内置的模式匹配,而不是grep:

git branch fix*

如果这是出于脚本目的,您可能应该处理输出格式git for-each-ref

答案 1 :(得分:0)

我明白了!正如@torek建议的那样,在分支名称之前有空格与

对齐
* current_branch_name

由于分支机构名称不包含空格字符(至少我不使用它们)

git branch | grep '\sfix-'

解决了我的问题,因为前面带有\s的任何字符串都意味着它位于分支名称的开头。谢谢!

答案 2 :(得分:-1)

git branch | grep '^ fix-'

注2个空格。