Git漂亮的格式颜色


80

我正在尝试为Git设置漂亮的格式颜色。据我所知,版本1.6.0仅识别红色,绿色和蓝色。

$ git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %Cyellowyellow%Creset %Cblueblue%Creset %Cmagentamagenta%Creset %Ccyancyan%Creset %Cwhitewhite%Creset"
red green %Cyellowyellow%Creset blue %Cmagentamagenta %Ccyancyan %Cwhitewhite

此外,所有颜色都不能使用括号内的颜色格式。

有没有办法列出Git可用的漂亮格式颜色?

不幸的是,这是在旧版SCO OpenServer 5.0.7机器上,SCO Skunkworks发布的Git的最新版本是1.6.0.3。


1
如果您的平台已过时,为什么不从git-scm.com下载最新的git 1.8.x并自己编译呢?然后它将支持所有最新功能。
mvp

@mvp好吧,正如您所说,该平台已过时-意味着缺少GNU构建环境。我正在准备用于迁移到Linux的现有应用程序源代码。
James Allman 2013年

请注意,Git 2.3.0(2015年2月)将允许使用24位颜色值,并可以更好地管理颜色属性(粗体,下划线,...)。请在下面
VonC 2015年

Git 2.26(Q1 2020)将添加属性“ bright”以支持明亮的aixterm颜色。请参阅下面我编辑的答案
VonC

Answers:


142

我没有的旧版本来git验证除以外的其他颜色redbluegreen支持。

虽然,即使是最新版本git(例如我使用的1.7.10),我也注意到的一件事是颜色不是redgreen并且blue需要放在括号内()。对于redgreenblue,括号是可选的。

因此,尝试一下:

git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %C(Yellow)yellow%Creset %Cblueblue%Creset %C(magenta)magenta%Creset %C(cyan)cyan%Creset %C(white)white%Creset"

颜色列表我知道的至少有:

normal
black
red
green
yellow
blue
magenta
cyan
white

它可以与以下属性之一结合使用:

bold
dim
ul
blink
reverse
italic
strike
bright  # (Git 2.26, Q1 2020, example: brightred)

如果您尝试使用更改颜色.gitconfig,则应该能够指定两种颜色-前景色背景色,并且可以将其与属性组合。


我相信您是对的,因为仅支持原色。带括号的颜色格式在此版本(1.6.0.3)中完全不起作用。
James Allman 2013年

16
空间分隔的前景,背景和属性,例如%C(红色绿色粗体)
HexInteractive 2013年

至少还有两个其他属性:斜体罢工,git-scm.com/docs/git-config手册中所述,出于完整性的原因。
onemorequest

1
@onemorequestion没问题。我已经相应地编辑了答案。顺便说一句,我真的很喜欢您的其他答案(stackoverflow.com/a/61487052/6309)。
VonC

39

Git 2.3.0(2015年2月)将允许(感谢Jeff Kink(peff):


parse_color:支持24位RGB值

某些终端(例如XTerm)使用对常规ANSI配色方案的扩展,允许完整的24位RGB颜色规格。
让我们允许用户指定十六进制RGB颜色,启用流行的粉红色ref装饰的所有重要功能

git log --format="%h%C(#ff69b4)%d%C(reset) %s"

  • 更好地管理颜色属性:

parse_color:识别“ no$foo”以清除$foo属性

您可以通过在颜色规格中添加“反向”来打开ANSI文本属性,例如“反向”。但是,您不能要求将其关闭。

对于常见情况,这无关紧要。您将在彩色部分的开头打开“反向”,然后使用“重置”清除所有属性。

但是,您可能希望打开某些属性,然后有选择地禁用其他属性。例如:

git log --format="%C(bold ul yellow)%h%C(noul) %s"

仅强调哈希,而无需重新指定其余属性。

这也可以帮助contrib/diff-highlight希望打开/关闭某些属性而不破坏现有颜色的第三方程序(如)。

请注意,某些属性规范可能是荒谬的(例如“ bold nobold”)。我们不必费心标记这样的构造,而是让终端对其进行分类。


在Git 2.26(2020年第一季度)中,基本的7种颜色学会了更亮的对应颜色(例如“ brightred”)

参见Eyal Soha(``)的提交c444f03提交1751b09提交4a28eb0(2020年1月21日
(通过合并JUNIOÇ滨野- gitster-提交87f17d7 2月25日2020)

color.c:支持明亮的aixterm颜色

签字人:Eyal Soha

这些颜色是3位颜色的明亮变体。

而不是前景的30-37范围和背景的40-47范围,它们分别处于90-97和100-107范围。

git config文档现在包括:

接受基本的颜色normalblackredgreenyellowbluemagentacyanwhite
给定的第一个颜色是前景色;第二个是背景。

除了所有的基本颜色normal有可以用前缀的颜色进行调整明亮的变种bright,如brightred


另请参见stackoverflow.com/a/12798205/6309:git 2.9.1支持两个新属性:斜体和罢工。
VonC

2
您知道如何在git别名中包含RGB颜色吗?#ff69b4在命令行上工作,但不能使用别名,因为它#开始注释
Tim

@TimMalone我尚未对其进行测试,但是配置手册页上说:“名称后面的空白,=第一个注释字符#或之后的行的其余部分以及行;尾的空白都将被丢弃,除非将其用双引号引起来。 “
VonC

1
@TimMalone将整个别名放在"-quotes中,这样#就不会特别了。
汤姆·黑尔

@VonC,当我将那些git log命令输出传递到文本或剪辑时,我得到了奇怪的字符。当颜色和属性与一起使用时,似乎会发生这种情况--format。知道为什么或为此解决吗?
嬉皮

7

分享我的git日志格式:

$ git log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

您也可以在〜/ .gitconfig中添加一个别名:

[alias]
    logs  = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

然后您可以使用在中定义的别名~/.gitconfig

$ git logs

7
问题是询问如何找出git的漂亮格式颜色。
Rapnar

4

我正在使用Ubuntu 18.04,并且能够使用韩小飞的建议。

对于初学者来说,通过编辑.gitconfig来获得最好的运气。

nano ~/.gitconfig

从上方将[alias]块粘贴到现有文本下

CTRL + O(写出)+ CTRL + X(关闭nano)

完成此操作后,即可看到漂亮的颜色

git logs

使用

“ git log”将为您提供没有颜色的视图,

与'git logs --oneline'相同,除了一个会在侧面显示繁荣

谢谢,我希望这可以帮助某人


4

一旦理解了使用自定义十六进制颜色值的语法(如@VonC的答案所示),我便写下了这两个别名。

有四个版本,唯一的区别是--graph指令,而'f'版本还将显示添加,删除或修改的文件:

[alias]
    lg = log --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    l1 = log --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    lgf = log --name-status --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s" 
    l1f = log --name-status --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"

我使用此站点选择了所需的确切颜色,然后从中复制了十六进制值:

https://www.colorhexa.com/

对于Windows,打开位于“ C:\ Users \ YourUserName”文件夹中的.gitconfig文件,并添加一个别名部分,如上所述。

希望你喜欢他们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.