当您运行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"
答案 0 :(得分:81)
从git 1。8。3(2013年5月24日)开始,您可以使用%C(auto)
以格式字符串%d
装饰git log
。
* "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.)
答案 1 :(得分:57)
git log --decorate
默认设置为:
可以通过 color.decorate
配置进行更改。
但是git log --format
没有提供专门显示HEAD
或遥控器或分支的方法:所有三个都通过{显示{1}},可以使用一种颜色。
2013年5月更新,mentioned below为Elad Shahar(upvoted),git 1.8.3提供了另外一个选项:
%d
现在运行git log –format
令牌,告诉Git在解析%C(auto)
(装饰),%d
(短提交对象名称)等时使用颜色输出
此Atlassian blog post评论此功能是其他几个功能的一部分,重点关注格式(%h
,git rebase
)和颜色(git count-objects
)
这是前一个auto,reset
of 1.8.2的补充,当输出未用于终端1时会自动禁用颜色
git branch -vv
注意:git 2.4 +(2015年第2季度)可以更好地重置分支名称周围的颜色
请commit 5ee8758见Junio C Hamano (gitster
):
中
%C(auto,blue)Hello%C(auto,reset)
:不要将“提交”颜色泄漏到下一个项目在“
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
中关闭“)
”。如果你想将HEAD和本地分支名称绘制成与正文文本相同的颜色(可能因为青色和绿色在黑白终端上太微弱而无法读取),你可能不希望说
color.diff.commit
因为您无法在黑白终端上重复使用相同的配置。你天真地期待
[color "decorate"]
head = black
branch = black
工作,但不幸的是没有。
它绘制字符串“[color "decorate"] head = normal branch = normal
”和分支名称,颜色与装饰元素之间的左括号或逗号相同。
这是因为代码在以自己的颜色打印“前缀”后忘记重置颜色。
请注意,git 2.5(2015年第2季度)修复了一个错误:
2015年5月13日commit 429ad20旁边的Junio C Hamano (gitster
)
(Junio C Hamano -- gitster
--在2015年5月22日commit fd70780合并)
HEAD
:不要过早缩短装饰名称Git 2.4中的“
log
”增强功能,显示了当前分支顶端的提交,例如“log --decorate
”,与--decorate = full无效。
Git 2.9.x +(2016年第3季度)将修复另一个错误并honor color=auto
for %C(auto)
Git 2。10。2(2016年10月)通过commit 82b83da修复了commit c99ad27(2016年9月29日)和René Scharfe (``)(2016年9月17日)的其他错误。
(Junio C Hamano -- gitster
--于2016年10月28日commit 76796d4合并)
HEAD -> master
:如果输出为空,则避免为pretty
添加重置我们发出一个转义序列,用于重置
%C(auto)
的颜色和属性,以确保按预期显示自动着色。
如果输出strbuf为空,则停止这样做,即当%C(auto)
出现在格式字符串的开头时,因为这样就不需要重置了,我们节省了几个字节。输出
%C(auto)
:让pretty
重置所有属性在
%C(auto)
上重置颜色和属性以启用全自动 控制他们; 否则可以使用粗体或反转等属性 仍然是以前的%C(auto)
占位符生效。
答案 2 :(得分:9)
将它们括起来:
%C(...): color specification, as described in color.branch.* config option
所以%C(yellow reverse)
会起作用。
答案 3 :(得分:7)
配置选项log.decorate
可以在日志中启用/禁用默认装饰。
git config --global log.decorate full
完成后,您可以使用color.decorate.*
来播放颜色
答案 4 :(得分:1)
有些人可能想使用这个:%C(colorname)
这不需要更改颜色配置。
示例:将作者姓名涂成黄色
--pretty=format:"%C(yellow)%an%Creset"
常规ANSI颜色应该https://en.wikipedia.org/wiki/ANSI_escape_code