将git log --decorate
默认放置:
并且可以通过 color.decorate
配置进行更改。
但是git log --format
不提供专门显示HEAD
or遥控器或分支的方法:所有三个都通过 显示%d
,可能使用一种颜色。
2013 年 5 月更新,正如Elad Shahar(upvoted)在下面提到的,git 1.8.3 提供了另一种选择:
git log –format
现在显示一个%C(auto)
令牌,告诉 Git 在解析%d
(装饰)、%h
(短提交对象名称)等时使用颜色用于终端输出。
这篇Atlassian 博客文章评论说,此功能是其他几个专注于格式 ( git rebase
, git count-objects
) 和颜色 ( git branch -vv
)的功能的一部分
这是auto,reset
1.8.2的补充,当输出不用于终端时,它会自动禁用颜色1
%C(auto,blue)Hello%C(auto,reset)
注意:git 2.4+(2015 年第二季度)会更好地重置分支名称周围的颜色。
请参阅Junio C Hamano ( )的提交 5ee8758:gitster
log --decorate
:不要将“提交”颜色泄漏到下一个项目中
在 " git log --decorate
" 中,你会看到这样的提交标头:
commit ... (HEAD, jc/decorate-leaky-separator-color)
其中“ commit ... (
”画在color.diff.commit
,“ HEAD
”中color.decorate.head
,“ ,
”中color.diff.commit
,分支名称中
color.decorate.branch
,然后关闭“ )
”中color.diff.commit
。
如果您想将 HEAD 和本地分支名称绘制为与正文文本相同的颜色(可能是因为青色和绿色在黑白终端上太暗而无法阅读),您不必说
[color "decorate"]
head = black
branch = black
因为您将无法在黑白终端上重复使用相同的配置。你会天真地期待
[color "decorate"]
head = normal
branch = normal
工作,但不幸的是它没有。它以与装饰元素之间的左括号或逗号相同的颜色
绘制字符串“ ”和分支名称。
这是因为代码在以自己的颜色打印“前缀”后忘记重置颜色。HEAD
请注意,git 2.5(2015 年第二季度)修复了一个错误:
参见Junio C Hamano ( )的提交 429ad20,2015年5 月 13 日。(由Junio C Hamano 合并 -- --在提交 fd70780中,2015 年 5 月 22 日)gitster
gitster
log
:不要过早缩短装饰名称
Git 2.4 中的“ log --decorate
”增强显示当前分支顶端的提交,例如“ HEAD -> master
”,不适用于 --decorate=full。
Git 2.9.x+(2016 年第三季度)将修复另一个错误并为color=auto
%C(auto)
Git 2.10.2(2016 年 10 月)通过提交 82b83da(2016 年 9 月 29 日)和René Scharfe (``)提交的 c99ad27(2016 年 9 月 17 日)修复了其他错误。(由Junio C Hamano 合并 -- --在提交 76796d4中,2016 年 10 月 28 日)
gitster
pretty
%C(auto)
:如果输出为空,请避免添加重置
我们发出一个用于重置颜色和属性的转义序列,%C(auto)
以确保按预期显示自动着色。
如果输出 strbuf 为空,即%C(auto)
出现在格式字符串的开头,则停止这样做,因为这样就不需要重置,我们在输出中保存了几个字节。
pretty
: 让%C(auto)
重置所有属性
重置颜色和属性以%C(auto)
启用对它们的全自动控制;否则,诸如粗体或反向之类的属性仍可能对以前的%C
占位符有效。