git-log中的颜色

时间:2011-05-04 21:07:00

标签: git 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"

5 个答案:

答案 0 :(得分:81)

从git 1。8。3(2013年5月24日)开始,您可以使用%C(auto)以格式字符串%d装饰git log

来自release notes

 * "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默认设置为:

  • HEAD in cyan
  • 红色的远程分支
  • 绿色标签

可以通过 color.decorate 配置进行更改。

但是git log --format没有提供专门显示HEAD 遥控器分支的方法:所有三个都通过{显示{1}},可以使用一种颜色。


2013年5月更新,mentioned belowElad Shahar(upvoted),git 1.8.3提供了另外一个选项:

  

%d现在运行git log –format令牌,告诉Git在解析%C(auto)(装饰),%d(短提交对象名称)等时使用颜色输出

Atlassian blog post评论此功能是其他几个功能的一部分,重点关注格式(%hgit rebase)和颜色(git count-objects

这是前一个auto,reset of 1.8.2的补充,当输出未用于终端1时会自动禁用颜色

git branch -vv

注意:git 2.4 +(2015年第2季度)可以更好地重置分支名称周围的颜色 请commit 5ee8758Junio 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中的HEADcolor.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

  • 黑色
  • 红色
  • 绿色
  • 黄色
  • 蓝色
  • 洋红色
  • 青色
  • 白色