在git中过滤远程分支

时间:2019-03-07 23:03:55

标签: regex git git-branch

我希望git branch -a仅显示远程分支的子集,例如以'origin / iliaskarim'之类的前缀开头的分支

完成此任务的最好方法是什么?

3 个答案:

答案 0 :(得分:4)

假设您处于bash上下文中,只需将(|)传递到grep

git branch -a | grep origin/iliaskarim

然后,如果您想同时这两个远程分支的子集所有本地分支,也许只考虑链接命令?

git branch -a | grep origin/iliaskarim; git branch

答案 1 :(得分:1)

前端git branch命令没有简便的方法。

但是,如果您使用类似名称空间的前缀(例如origin/iliaskarim/(请注意尾部斜杠))git for-each-ref,这是实现git branch的管道命令, 有一个很好的方法来做到这一点。特别是:

git for-each-ref refs/remotes/origin/iliaskarim

足以迭代那些名称,并且仅迭代那些名称。您仍然必须将其与其他命令和/或选项放在一起才能获得有限git branch -a的效果。

(编辑:为phd notes in a comment,如果在此处不使用斜杠分隔符,也可以将模式匹配与显式的glob-star:refs/remotes/origin/iliaskarim*一起使用。记住要保护星形外壳(如果使用外壳)。

使用grep -v作为管道来过滤掉包含remotes/origin/但不继续使用iliaskarim的名称是另一种选择。 (请参见RomainValeri's answer;此处的想法是反转测试,删除匹配某些正则表达式的 do 分支。提供合适的RE,具体取决于您的grep使用哪种表达式语法支持,请作为练习。:-))

答案 2 :(得分:0)

git branch -r --list origin / iliaskarim *