11

git for-each-ref用作 git 别名来显示分支名称和该分支上最后一次提交的主题。也就是说,很难分辨分支名称的结束位置和提交消息主题的开始位置,因此我尝试对分支名称进行着色以更容易地区分两者之间的区别。下面是没有颜色的工作别名:

[alias]
  logbranch = for-each-ref --sort=-committerdate refs/heads/ --format='%(refname:short) %(subject)'

为了添加颜色,我尝试使用 shell 颜色转义(我正在使用 bash),如下所示:

[alias]
  logbranch = for-each-ref --sort=-committerdate refs/heads/ --format='[\033[0;31m]%(refname:short)[\e[m]   %(subject)'

这给了我一个 git config 错误。我还尝试用双引号替换单引号,并转义方括号,但没有骰子。

想法?

4

2 回答 2

27

Git 1.9/2.0(2014 年第一季度)将为git for-each-ref.
请参阅Ramkumar Ramachandra (artagnon)提交 fddb74c

for-each-ref: 介绍%(color:...)颜色

git for-each-ref使用颜色格式选项增强“ ”。
您现在可以在 for-each-ref 中使用以下格式:

%(color:green)%(refname:short)%(color:reset)

其中颜色名称在color.branch.*.


使用 Git 2.15(2017 年第四季度),您将能够打开或关闭这些颜色。

请参阅Jeff King ( )的提交 0c88bf5(2017 年 10 月 3 日) 。(2017 年 10 月 4 日合并)peff

--color为所有 ref-filter 用户提供选项

当 ref-filter 在11b087a中了解 want_color() 时 (ref-filter:在发射颜色之前咨询 want_color(),2017-07-13),能够为特定命令关闭和打开颜色变得很有用。对于git-branch,您可以使用--color/来执行此操作--no-color

但是对于git-for-each-refgit-tag,其他 ref-filter 用户,你别无选择,只能调整 " color.ui" 配置设置。让我们为这两个命令提供常用的颜色命令行选项。

这作为一种覆盖配置的方法更为明显。它还为我们准备好“ always”改变的行为(这样当我们的输出进入非终端时,我们仍然有一种强制颜色的方法)。

于 2013-12-10T16:16:11.750 回答
6

我在手册页中没有看到任何for-each-ref表明它支持反斜杠转义序列的内容,例如\033. 如果将\033(and \e) 替换为文字转义字符,它似乎工作得很好。

Cupcake 说for-each-ref它还支持%xx十六进制转义序列,如下所示:

[alias]
    logbranch = "for-each-ref --sort=-committerdate refs/heads/ --format='[%1B[0;31m]%(refname:short)[%1B[m]   %(subject)' "

这在我的系统上也可以正常工作。

于 2013-08-06T01:51:10.693 回答