【问题标题】:List all local git branches without an asterisk [duplicate]列出所有不带星号的本地 git 分支 [重复]
【发布时间】:2019-01-12 18:45:56
【问题描述】:

如果我运行 git branch,我会得到类似的结果:

* master
  dev
  foo

如果我执行git branch -r,它将显示遥控器上的所有分支,不带星号(星号显示我当前签出的分支)。

如何在不显示星号的情况下列出所有本地分支机构?我需要一个编程解决方案,以便我可以逐行读取结果。

【问题讨论】:

  • 您可以使用正则表达式修剪前导空格并删除星号。我确信您使用的编程语言可以做到这一点。
  • @tangoal:你可以这样做,但这几乎肯定不是最好的方法。 Git 作者将他们的命令松散地分为他们所谓的 plumbingporcelain。管道命令是供其他命令使用的,而瓷器命令是供人类使用的。因此,管道命令的输出通常最适合作为另一个程序的输入,而不是用于观察。 git for-each-ref 是实现 git branch --listgit tag --list 和其他几个的管道命令。

标签: git git-branch


【解决方案1】:

你可以使用for-each-ref:

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

【讨论】:

  • 您可以将:shortlstrip=-1 传递给 refname 以仅获取分支名称。喜欢git branch --format='%(refname:short)'
  • @JohnnyWiller 对git branch --format 的建议也适用于包含斜杠的分支名称,但答案没有。
  • 又快又脏的解决方案git branch | cut -c 3-,谁不喜欢又快又脏的解决方案?
  • 使用refs/heads/** 包含带有斜杠的分支名称。
  • @JoeyAdams 只是省略任何 *s 也适用于我:refs/heads
猜你喜欢
  • 1970-01-01
  • 2022-01-09
  • 2016-12-31
  • 2015-08-09
  • 2012-05-23
  • 1970-01-01
  • 2019-09-28
  • 2013-03-21
  • 2019-07-14
相关资源
最近更新 更多