Git漂亮格式颜色

k10s72fa  于 2023-01-07  发布在  Git
关注(0)|答案(5)|浏览(128)

我正在尝试为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。

yacmzcpb

yacmzcpb1#

我没有旧版本的git来验证是否支持redbluegreen以外的颜色。
不过,我注意到,即使是最近版本的git(比如我使用的1.7.10),除了redgreenblue之外的颜色也需要放在括号()中,而对于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来改变颜色,你应该能够指定两种颜色--前景背景,并且你可以把它和一个属性结合起来。

2ekbmq32

2ekbmq322#

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

parse_color:支持24位RGB值

一些终端(如XTerm)允许使用常规ANSI颜色方案的扩展来实现全24位RGB颜色规范。
让我们允许用户指定十六进制RGB颜色,启用最重要的热粉红色参考装饰功能

git log --format="%h%C(#ff69b4)%d%C(reset) %s"
  • 更好地管理颜色属性:

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

您可以通过在颜色规范中输入"reverse"来打开ANSI文本属性(如"reverse")。但是,您不能要求关闭"reverse"。
对于常见的情况,这并不重要。您可以在彩色部分的开头打开"reverse",然后使用"reset"清除所有属性。
但是,您可能希望打开某些属性,然后选择性地禁用其他属性。例如:

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

下划线仅用于哈希,而无需重新指定其余属性。
这也可以帮助像contrib/diff-highlight这样的第三方程序,它们希望在不破坏现有颜色的情况下打开/关闭某些属性。
注意,有些属性规范可能是无意义的(例如,"bold nobold"),我们不麻烦标记这样的结构,而是让终端来分类。
在Git 2.26(2020年第一季度)中,basic 7色学习了更亮的对应颜色(例如"brightred")
参见commit c444f03commit 1751b09commit 4a28eb0(2020年1月21日),作者为Eyal Soha (``)
(由Junio C Hamano -- gitster --合并到commit 87f17d7,2020年2月25日)

color.c:支持明亮aixterm颜色

签署人:埃亚尔·索哈
这些颜色是3位颜色的明亮变体。
而不是30 - 37范围的前景和40 - 47范围的背景,他们生活在90 - 97和100 - 107范围,分别。
git config文档现在包括:
可接受的基本颜色为normalblackredgreenyellowbluemagentacyanwhite
给定的第一种颜色是前景;二是背景。

    • normal外,所有基本颜色都有一个明亮的变体,可以通过在颜色前加上bright来指定,如brightred。**

随着Git 2.35(2022年第一季度),"default"和"reset"颜色被添加到我们的调色板中。
参见commit de65851(2021年10月26日)和Robert Estelle ( rwe )commit 05f1f41commit aeefc18(2021年10月25日)。
(由Junio C Hamano -- gitster --合并至commit 15209c8,2021年12月15日)

color:允许颜色以"reset"为前缀

签署人:罗伯特·埃斯特尔
"reset"以前被视为表示\e[m的独立特殊颜色名称。
现在,它可以应用于其他颜色属性,允许精确的规范,而无需隐式属性继承。
例如,"reset green"现在呈现\e[;32m,这被解释为"reset everything";然后将前景设置为绿色"。
这意味着背景和其他属性也将重置为其默认值。
以前,这是不可能用单一颜色表示的:"reset"可以单独指定,也可以指定带有属性的颜色,但有些事情(如清除背景颜色)是不可能的。
还有一个单独的更改,它引入了"默认"颜色名称来帮助实现这一点,但即使这样,上述情况也只能通过显式禁用每个属性来表示:绿色默认无粗体无暗淡无斜体无ul无 Flink 无反转无删除
config现在在其手册页中包括:
伪属性reset在应用指定的颜色之前重置所有颜色和属性。例如,reset green将导致绿色前景和默认背景,而没有任何活动属性。

hfyxw5xn

hfyxw5xn3#

分享我的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
goqiplq2

goqiplq24#

下面是我在理解了使用VonC's answer中所示的自定义十六进制颜色值的语法之后编写的两个别名。
有四个版本,唯一的区别是--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"

我使用ColorHexa来选择我想要的颜色,然后从中复制十六进制值。
对于Windows,打开位于 C:\Users\YourUserName 文件夹中的 .gitconfig 文件,并添加一个别名部分,如上所述。

igetnqfo

igetnqfo5#

我使用的是Ubuntu 18.04,我可以使用韩晓飞的建议。
对于试图完成这个任务的初学者来说,我最幸运的是编辑了. gitconfig。

nano ~/.gitconfig

将[别名]块从上方粘贴到现有文本下方
CTRL + O(写出)+ CTRL + X(关闭nano)
在这样做之后,要查看可以使用的漂亮颜色

git logs

使用
'git log'将显示没有颜色的视图,
对于“git日志-online”也是如此,只是其中一个日志将在旁边显示蓬勃发展
谢谢,我希望这对某人有帮助

相关问题