git log --decorate
默认会显示:
- HEAD 以青色显示
- 远程分支以红色显示
- 标签以绿色显示
可以通过color.decorate
配置更改颜色。
但是 git log --format
没有特定的方式来显示 HEAD
或 远程分支 或 分支:所有三个都通过 %d
显示,只能使用一种颜色。
2013年5月更新,如下面所述由Elad Shahar(赞同),git 1.8.3提供了一个更多的选项:
git log –format
现在支持一个%C(auto)
标记,告诉Git在终端输出时使用颜色来解决%d
(装饰)、%h
(短提交对象名称)等。
这篇Atlassian博客文章评论说,这个功能是几个其他功能的一部分,主要集中在格式(git rebase
、git count-objects
)和颜色(git branch -vv
)上。
这是在之前1.8.2的auto,reset
的基础上增加的,当输出不用于终端时自动禁用颜色。
%C(auto,blue)Hello%C(auto,reset)
注意:git 2.4+(2015年第二季度)将更好地重置分支名称周围的颜色。
请参见
Junio C Hamano( gitster )
提交commit 5ee8758:
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
" 和分支名称以及装饰元素之间的左括号或逗号涂成相同的颜色。
这是因为代码在以自己的颜色打印 "prefix" 后忘记重置颜色。
请注意,git 2.5 (Q2 2015) 修复了一个错误:
请参见commit 429ad20,由Junio C Hamano (gitster
)于2015年5月13日提交。
(由Junio C Hamano -- gitster
--合并到commit fd70780,2015年5月22日)
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月)修复了commit 82b83da(2016年9月29日)和commit c99ad27(2016年9月17日)的其他错误,由René Scharfe(“”)修复。
(由Junio C Hamano -- gitster
--合并于commit 76796d4,2016年10月28日)
pretty
: 如果输出为空,则避免为%C(auto)
添加重置
我们会发出一个用于重置颜色和属性的转义序列,以确保自动着色按预期显示。
如果输出的strbuf为空,则停止这样做,即当%C(auto)
出现在格式字符串的开头时,因为此时不需要重置,我们可以在输出中节省一些字节。
pretty
: 让%C(auto)
重置所有属性
在%C(auto)
上重置颜色和属性,以实现对它们的完全自动控制;否则,像粗体或反向等属性可能仍然受到先前%C
占位符的影响。
--decorate
命令似乎有自己的实现和配置,而--pretty
命令通过%d
提供相同的信息作为一个块,这意味着你不能像使用--decorate
命令一样对--pretty
命令进行同样精细的颜色配置。 - VonCgit config --show-origin -l
命令:您将看到所有配置。然后,您可以使用"color"命令进行grep。 - VonC