在 git 中过滤远程分支

Filter remote branches in git

我希望 git branch -a 只显示远程分支的一个子集,例如以 'origin/iliaskarim'

前缀开头的分支

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

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

git branch -a | grep origin/iliaskarim

那么如果你想要两者远程分支的这个子集你所有的本地分支,也许考虑只链接命令?

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

前端 git branch 命令没有简单的方法来执行此操作。

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

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

足以迭代这些名称,并且仅迭代那些名称。您仍然需要将它与其他命令 and/or 选项放在一起才能获得有限 git branch -a.

的效果

(编辑:如,如果此处不使用斜杠分隔符,您也可以使用带有显式全局星号的模式匹配:refs/remotes/origin/iliaskarim*。记住要保护来自 shell 的星标,如果使用 shell。)

使用 grep -v 作为管道过滤掉包含 remotes/origin/ 但不继续使用 iliaskarim 的名称是另一种选择。 (参见 ;这里的想法是反转测试,删除 do 匹配某些正则表达式的分支。想出一个合适的 R.E,这取决于关于你的 grep 支持的表达式语法,留作练习。:-))

git branch -r --list origin/iliaskarim\*