如何为Git控制台着色?


371

我最近看到gitWindows 中的控制台是彩色的,例如绿色表示添加,红色表示删除,等等。如何为git控制台着色?

要安装它,我使用了以下命令: $ sudo apt-get install git-core


6
从git1.8.4开始,默认情况下您应该看到颜色。请参阅下面的答案
VonC

1
在Ubuntu 14.04上未发生@VonC git 1.9.1。必须根据JoelPurra的回答自行设置配置。
Izkata 2014年

1
@Izkata很奇怪,我稍后再测试,但是git 2.1+呢?(正如我在以下stackoverflow.com/questions/10998792/…中评论的那样)
VonC 2014年

Answers:


682

正如@VonC指出那样,自Git 1.8.4起color.ui默认为auto


来自Unix&Linux Stackexchange问​​题如何着色git的输出?@Evgeny答案

git config --global color.ui auto

color.ui是一个元配置,其中包括命令color.*可用的所有各种配置git。在中对此进行了深入解释git help config

因此,基本上,与color.*分别设置不同的设置相比,它更容易,而且更可靠。

来自git config文档的深入解释:

color.ui:此变量确定诸如color.diffcolor.grep控制每个命令系列使用颜色的变量的默认值。随着更多命令学习配置以设置该--color选项的默认值,其范围将扩大。将它设置为always,如果你想不用于机器消耗的用色都输出,true或者auto如果你想这样的输出使用的颜色,当写入终端,或者false或者never,如果你喜欢的git命令不要使用颜色,除非有一些明确启用其他配置或--color选项。


11
这也可以在OSX上使用,而不仅仅是在Linux上被问到
StackExchange What Heck

可能需要在末尾添加“ true”。git config --global color.ui auto true
Vamshi

6
@Skeptor:不,auto足够了。
乔尔·普拉

2
@Phani:是的,它是持久的。
乔尔·普拉

5
它是持久性的,因为它将ui = auto条目添加到[color]用户~/.gitconfig文件中的该部分。
Andris


30

将以下代码添加到您的.gitconfig文件中:

  [color]
    ui = auto
  [color "branch"]
    current = yellow reverse
    local = yellow
    remote = green
  [color "diff"]
    meta = yellow bold
    frag = magenta bold
    old = red bold
    new = green bold
  [color "status"]
    added = yellow
    changed = green
    untracked = cyan

7

如果您要求,Git会自动为大多数输出​​着色。您可以非常明确地了解想要的颜色以及颜色。但是要打开所有默认的终端颜色,请将color.ui设置为true:

git config --global color.ui true

6

在Ubuntu或任何其他平台(也是Windows!)中;从git1.8.4开始,该版本于2013-08-23发布您无需执行任何操作

在设置“ user.name/email”向Git 自我介绍之后,许多教程都教用户将“ color.ui”设置为“ auto” 。现在,变量默认为“ auto”。

因此,您将默认看到颜色。


2
(嗯,甚至是Windows,取决于终端:stackoverflow.com/a/12133244/6309
VonC

2
在2014年使用Ubuntu时,安装了git并且仍然必须运行git config --global color.ui auto。Mac也是如此,唯一的默认设置auto是Windows PC上的Git Bash。
sargas

1
@sargas当然,您需要从PPA安装:launchpad.net/~git-core/+archive/ppa(对于Ubuntu)或git-scm.com/download/mac(对于Mac)
VonC

1
我知道了,所以要看来源了。感谢您抽出宝贵时间对此发表评论。
sargas

6

~/.gitconfig文件中,只需添加以下内容:

[color]
  ui = auto

它会处理所有的git命令。


5

另一种方法是编辑.gitconfig(如果不存在则创建一个),例如:

vim ~/.gitconfig

然后添加:

[color]
  diff = auto
  status = auto
  branch = auto

3
正如@ chuntao-lu提到的[color] ui = auto就足够了。
Chacko Mathew 2014年

5

GIT默认使用彩色输出,但是在某些系统(例如CentOS)上未启用它。您可以像这样启用它

git config --global color.ui  true 
git config --global color.ui  false 
git config --global color.ui  auto 

您可以从此处选择所需的命令。

这里--global是可选的,为您的系统中每个仓库应用的行动。如果您只想为当前存储库应用颜色,则可以执行以下操作-

 git config color.ui  true 

1

使用Git 2.18,您可以控制如何在控制台中指定颜色。
git config”命令使用单独的选项,例如“ --int”,“ --bool”等,以指定调用者希望将该值解释为哪种类型

--type=<typename>引入了一个新的“ ”选项,这使定义新类型的方法更加简洁。

参见commit fb0dc3b(2018年4月18日)和commit 0a8950b(2018年4月9日)作者Taylor Blau(ttaylorr
(由Junio C gitsterHamano合并--commit e3e042b中,2018年5月8日)

builtin/config.c:支持--type=<type>作为首选别名--<type>

git config长期以来一直允许调用者提供“类型说明符”,该指令指示git config(1)确保可以将传入值解释为该类型,以及(2)在该类型下规范化传出值。

在另一个系列中,我们建议使用--type=color--default替换此功能 --get-color

但是,我们通常使用--color“使此输出着色”的含义,而不是“应将此值视为颜色”。

当前,git config不支持这种着色,但是我们应该注意避免过早地蹲下该选项,以便 将来(如果需要)git config可以支持--color(传统意义上)。

在这个补丁中,我们支持--type=<int|bool|bool-or-int|...>除了--int--bool,等
这使得上述即将到来的补丁来支持查询通过默认的颜色值--type=color --default=...,没有乱花--color

当给出多个旧式--<type>标志时,我们保留了抱怨的历史行为,并将其扩展到有冲突的新式--type=<type>标志。--int --type=int(及其可交换对)没有抱怨,但是--bool --type=int(及其可交换对)有抱怨。

因此,在您拥有--bool和之前--int,现在(文档):

--type <type>

git config”将确保任何输入或输出在给定的类型约束下都是有效的,并将以<type>的规范形式对输出值进行规范化。

有效<type>的包括:

  • ' bool':将值规范化为“ true”或“ false”。
  • ' int':将值规范化为简单的十进制数字。可选的后缀“ k”,“ m”或“ g”将导致输入时将该值乘以1024、1048576或1073741824。
  • ' bool-or-int':如上所述,根据' bool'或' int' 规范化。
  • ' path':通过在指定用户的home目录~的值$HOME~user主目录中添加前导来规范化。该说明符在设置值时无效(但是您可以git config section.variable ~/从命令行使用它来让您的shell进行扩展。)
  • ' expiry-date':通过将固定或相对日期字符串转换为时间戳来规范化。设置值时,该说明符无效。
--bool::
--int::
--bool-or-int::
--path::
--expiry-date::
  Historical options for selecting a type specifier. Prefer instead `--type`,
(see: above).

请注意,Git 2.22(2019年第二季度)解释了“ git config --type=color ...”的意思是要替换“ git config --get-color”,但有未记录的细微差别,现已修复。

参见Jeff King()的commit cd8e759(2019年3月5日(由Junio C Hamano合并--commit f6c75e3中,2019年3月20日)peff
gitster

config:文档--type=color输出是完整的行

即使较新的“ --type=color”选项git config意在与传统的“ --get-color”选项向上兼容,但与后者不同的是,它的输出并不是不完整的行,最后没有LF。
这使其与“ git config --type=bool”之类的其他类型的输出保持一致。

将其记录下来,因为它有时会使不知情的用户感到惊讶。

现在显示为:

--type=color [--default=<default>]优先于。--get-color (但请注意,--get-color它将省略所打印的尾随换行符 --type=color)。


您可以看到已git config --type=bool与Git 2.26(Q1 2020)一起使用,以替换git config --bool示例模板中的“ ”调用。

参见Lucius Hu()的commit 81e3db4(2020年1月19日(由Junio C Hamano合并--commit 7050624中,2020年1月30日)lebensterben
gitster

templates:修复不推荐使用的类型选项 --bool

签字人:胡天ius

--bool选项git-config被标记为历史,并建议用户使用--type=bool来代替。
该提交将替换--bool模板中所有出现的内容。

还要注意的是,没有其他过时的类型选项中找到,其中包括--int--bool-or-int--path,或--expiry-date


0

请参考此处:https : //nathanhoad.net/how-to-colours-in-git/

脚步:

  1. 打开〜/ .gitconfig进行编辑

    vi〜/ .gitconfig

  2. 粘贴以下代码:

    [color]
      ui = auto
    [color "branch"]
      current = yellow reverse
      local = yellow
      remote = green
    [color "diff"]
      meta = yellow bold
      frag = magenta bold
      old = red bold
      new = green bold
    [color "status"]
      added = yellow
      changed = green
      untracked = cyan
    
  3. 保存文件。

只需更改本地存储库中的任何文件,然后执行

git status

维克多(Victor)已经有同一个#answer-29320572
评论家bug
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.