git-log中的颜色
当你运行git log --decorate --pretty=oneline
,输出将具有像(HEAD, refs/published/master, master)
着色的条目。
我也有我的gitconfig中的以下内容:
[color "branch"] current = yellow reverse local = yellow remote = green
在做如下的自定义格式时,如何复制这些颜色?
git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"
从git 1.8.3(2013年5月24日)开始,可以使用%C(auto)
装饰git log
格式string中的%d
。
从发行说明 :
* "git log --format" specifier learned %C(auto) token that tells Git to use color when interpolating %d (decoration), %h (short commit object name), etc. for terminal output.)
git log --decorate
默认会把:
- 在青色的头
- 在红色的远程分支
- 绿色的标签
并可以通过color.decorate
configuration进行更改。
但是, git log --format
不提供专门显示HEAD
或遥控器或分支的方法:所有三个都通过%d
显示,只有一种颜色可能。
如Elad Shahar (upvoted)所述,2013年5月更新,git 1.8.3提供了另一个选项:
git log –format
现在运行一个%C(auto)
令牌,告诉Git在parsing%d
(装饰),%h
(短提交对象名称)等terminal输出时使用颜色。
这个Atlassian博客文章评论说,这个function是其他几个重点格式( git rebase
, git count-objects
)和颜色( git branch -vv
)的一部分,
此外还有1.8.2的auto,reset
,当输出不用于terminal1时,会自动禁用颜色
%C(auto,blue)Hello%C(auto,reset)
注意:git 2.4+(2015年第二季度)将会更好地重新设置分支名称的颜色。
见Junio C gitster
( gitster
)的 提交5ee8758 :
log --decorate
:不要泄漏“提交”颜色到下一个项目在“
git log --decorate
”中,你会看到这样的提交标题:
commit ... (HEAD, jc/decorate-leaky-separator-color)
commit ... (
color.diff.commit
中的“commit ... (
”),color.diff.commit
中的“HEAD
”,color.decorate.head
中的分支名称,然后closures“)
“incolor.diff.commit
。如果你想用与正文相同的颜色绘制HEAD和本地分支名称(也许是因为青色和绿色在黑色的terminal上太微弱以至于不能读取),那么你就不会想要说
[color "decorate"] head = black branch = black
因为你将无法在白底黑字terminal上重复使用相同的configuration。 你会天真地期待
[color "decorate"] head = normal branch = normal
去工作,但不幸的是没有。
它以与装饰元素之间的左括号或逗号相同的颜色绘制string“HEAD
”和分支名称。
这是因为在打印“前缀”后,代码会忘记重置颜色。
请注意,git 2.5(Q2 2015)修复了一个bug:
见Junio C gitster
( gitster
)的 提交429ad20 ,2015年5月13日。
(由Junio C gitster
合并- gitster
-在2015年5月22日提交fd70780 )
log
:不要过早缩短装饰名称Git 2.4中的“
log --decorate
”增强function在当前分支的顶端显示提交,例如“HEAD -> master
”,并不适用于–decorate = full。
Git 2.9.x +(Q3 2016)将修复另一个错误,并为%C(auto)
荣誉color=auto
。
Git 2.10.2(2016年10月)修复其他错误与提交82b83da (2016年9月29日),并提交由RenéScharfe(“)c99ad27( 2016年9月17日) 。
(由Junio C gitster
合并- gitster
-在承诺76796d4 ,2016年10月28日)
pretty
:如果输出为空,避免为%C(auto)
添加重置我们发出一个转义序列来重置
%C(auto)
颜色和属性,以确保自动着色按预期显示。
如果输出strbuf为空 ,即在格式化string开始时出现%C(auto)
,那么停止这样做 ,因为这样就不需要复位,我们在输出中保存几个字节。
pretty
:让%C(auto)
重置所有属性在
%C(auto)
时重置颜色和属性以启用全自动控制; 否则,像以前的%C
占位符一样,粗体或反转等属性仍然有效 。
将它们括起来:
%C(...): color specification, as described in color.branch.* config option
所以%C(yellow reverse)
会起作用。
configuration选项log.decorate
可以启用/禁用日志中的默认装饰。
git config --global log.decorate full
一旦完成,你可以使用color.decorate.*
来玩颜色