2

我正在使用 Git,使用 Windows 7、PowerShell 和 Posh-Git。我有以下别名设置:

ls = log --pretty=tformat:"%C(yellow)%h\\ %C(green)[%ad]%C(cyan)\\ <%cn>\\ %C(reset)%s%C(auto)%d"

问题是,当我将输出通过管道传输到 clip.exe 以将其复制到剪贴板时,它还会复制一些颜色字符。稍微阅读一下,我发现您可以添加“自动”,以便在--no-color指定选项时使用默认颜色。所以现在我有:

ls = log --pretty=tformat:"%C(auto,yellow)%h\\ %C(auto,green)[%ad]%C(auto,cyan)\\ <%cn>\\ %C(auto,reset)%s%C(auto)%d"

我现在遇到的问题是显示参考的输出的最后一位。我将颜色设置为自动,以便 git 为分支和标签应用默认颜色,但无法弄清楚如何让它尊重该--no-color选项。如果我将其设置为 %C(auto),则颜色会一直显示。我尝试了 %C(auto,auto) 并且可以使用--no-color,但是没有它 git 会抱怨:

error: invalid color value: auto
fatal: unable to parse --pretty format
4

1 回答 1

3

无法弄清楚如何让它尊重该--no-color选项。
如果我将它设置为%C(auto),颜色会一直显示。

这将在 git 2.9.x+(2016 年第三季度)中修复

请参阅Edward Thomson ( )的提交 b15a3e0(2016 年 5 月 27 日) 。(由Junio C Hamano 合并——提交 1b3d14c中,2016 年 6 月 20 日)ethomson
gitster

format_commit_messagecolor=auto:荣誉%C(auto)

git-log(1)指定%C(auto)格式占位符时将“在下一次打开自动着色%placeholders直到再次切换颜色”的文档。

然而,当%C(auto)被使用时,本实现将无条件地打开颜色(即使当前上下文的颜色配置被关闭——例如,--no-color被指定或颜色是auto并且输出不是 tty)。

当指定格式字符串时更新format_commit_one以检查当前上下文%C(auto),这确保我们不会无条件地写入颜色。
这使该行为与 的行为一致%C(auto,<colorname>),并允许用户指定仅当输出为 tty 时才应显示颜色。

这就是你在 git-for-windows 2.9.0 中看到的

没有颜色不起作用

但是使用更新的 2.9.x+ git 版本,--no-color确实可以:

没有颜色确实有效

于 2016-06-21T00:46:44.697 回答