如何为Git控制台着色?

417

我最近发现Windows上的git控制台是有颜色的,例如添加绿色,删除红色等。如何使我的git控制台也有这样的颜色呢?

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


6
从Git 1.8.4版本开始,默认情况下应该可以看到颜色。请参见我在下面的答案 - VonC
2
@VonC 在Ubuntu 14.04上安装git 1.9.1时,没有成功。我不得不按照JoelPurra的回答自己设置配置。 - Izkata
1
@Izkata 奇怪,我稍后会测试一下,但是 git 2.1+ 怎么样?(正如我在 https://dev59.com/xGgu5IYBdhLWcg3w5K9a?noredirect=1#comment33988696_17278947 下面评论中所提到的) - VonC
这是一个非常有用的链接,可以获取颜色值、属性等信息:https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-config.html - Mladen B.
13个回答

748

正如 @VonC所指出的那样,自从Git 1.8.4版本以来,color.ui默认为auto


来自Unix&Linux Stackexchange的问题如何给git命令的输出添加颜色?@Evgeny的回答

git config --global color.ui auto

color.ui是一个元配置,它包含了所有可用于git命令的各种color.*配置。这在git help config中有详细解释。

因此,基本上它比单独设置不同的color.*设置更容易且更具未来性。

git config文档中有关于此的深入解释:

color.ui:此变量确定类似于color.diffcolor.grep的变量的默认值,这些变量控制每个命令族使用颜色的情况。随着更多的命令学习配置来设置--color选项的默认值,其范围将扩展。如果您希望所有不适用于机器消费的输出都使用颜色,请将其设置为always;如果您希望这种输出在写入终端时使用颜色,则将其设置为trueauto;如果您希望git命令不使用颜色,除非通过其他配置或--color选项明确启用它们,则将其设置为falsenever

11
这也适用于OSX,不仅仅是Linux,就像问题所问的那样。 - StackExchange What The Heck
6
@Skeptor:不需要,auto 就足够了。 - Joel Purra
2
@Phani:是的,它是持久化的。 - Joel Purra
5
它之所以持久,是因为它将ui = auto条目添加到用户的~/.gitconfig文件中的[color]部分。 - Andris
1
给之前的答案点个赞,表达感谢和致敬。 - David Manpearl
显示剩余4条评论

59

3
我正在使用较旧版本的git,设置color.ui auto无效,但这个方法有效。谢谢。 - Matt K

49

将下面的代码添加到你的 .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

9

如果你要求,Git会自动为其大多数输出着色。你可以非常具体地指定需要着色的内容以及如何进行着色;但是要打开所有默认终端配色方案,请将 color.ui 设置为 true:

git config --global color.ui true

9

无论是在Ubuntu或者其他平台(是的,包括Windows!)上,从git1.8.4开始,这个版本于2013-08-23发布, 你不需要做任何事情

许多教程都会教用户将“color.ui”设置为“auto”,作为设置“user.name/email”之后引入自己到Git中的第一件事。 现在该变量默认为“auto”。

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


2
即使是Windows,也可以根据终端进行设置:https://dev59.com/x2fWa4cB1Zd3GeqPjrZ0#12133244 - VonC
3
在2014年使用Ubuntu时,安装了git,但仍需运行git config --global color.ui auto。我的Mac也是如此,唯一默认为auto的是我在Windows PC上使用的Git Bash。 - sargas
1
@sargas 当然,你需要安装[从PPA](https://launchpad.net/~git-core/+archive/ppa):https://launchpad.net/~git-core/+archive/ppa(适用于Ubuntu)或http:// git-scm.com / download / mac(适用于Mac)。 - VonC
1
我明白了,所以这取决于源代码。感谢您抽出时间对此进行评论。 - sargas

6

改善Windows 10上Git“分支类型”颜色:

显示命令 git branch -avv 适用于所有示例...


1. Git默认颜色方案:

git config --system --remove-section color.branch

enter image description here


2. 另一个答案给出的分支颜色设置:

git config --system color.branch.local    "yellow"
git config --system color.branch.current  "yellow reverse"
git config --system color.branch.remote   "green"

enter image description here


3. 可能改进的分支颜色方案:

git config --system color.branch.local    "yellow"
git config --system color.branch.current  "brightwhite yellow"
git config --system color.branch.remote   "normal green"
git config --system color.branch.upstream "brightwhite cyan"

enter image description here


4. 制作自己的:

指定前景色加上(可选的)背景色。在Windows 10中对颜色有影响的一组颜色如下正则表达式所示(是的,你可以使用brightblack,实际上非常有用):

(normal|(bright)?(black|red|green|yellow|blue|magenta|cyan|white))

据我所知,在Windows 10控制台中,dim选项(参见底部的文档链接)没有任何效果,而bold选项与bright*颜色具有相同的效果。现在回想一下所示例子中的配置语法:

git config <config-type> color.branch.<slot>  "<fg> <bg>"

参数<config-type>通常是--system--global。如果省略,则指定的颜色仅应用于当前库。使用刚刚详细介绍的颜色名称,您可以为特定的分支类型设置前景<fg>和背景<bg>颜色,其中<slot>是以下之一:
  • current(当前分支)
  • local(本地分支)
  • remote(refs/remotes/中的远程跟踪分支)
  • upstream(上游跟踪分支)
  • plain
与往常一样,您可以通过以下命令显示您的整个git配置,其中将包括您按照此处描述设置的任何选项:
git config -l --show-origin

请注意还有一组与日志输出颜色有关的配置选项(此处不讨论):

git config --system color.decorate.(branch|remoteBranch|tag|stash|HEAD|grafted) <color>

参考资料:https://git-scm.com/docs/git-config


6
在你的~/.gitconfig文件中,只需添加以下内容即可:
[color]
  ui = auto

它可以处理你所有的git命令。

5

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

vim ~/.gitconfig

并且添加:
[color]
  diff = auto
  status = auto
  branch = auto

3
如@chuntao-lu所提到的,[color] ui = auto就足够了。 - Chacko

4
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 

3

如果您不满意默认设置,可以使用ANSI转义码来帮助您设置颜色,如果您想修改某些文本,可以编写bash来帮助您。请参见下面的示例:

示例

# .gitconfig

[alias]
    st-color = "!f() { \
        echo -n -e '\\033[38;2;255;0;01m\\033[4m' ;\
        git status -s | grep ' D' | \
        sed -e 's/^ ./DELETE:/' ; \
        echo -n -e '\\033[m' ;\
        \
        echo -n -e '\\033[48;2;128;128;128m' ;\
        echo -n -e '\\033[38;2;0;255;01m' ;\
        git status -s | grep ' [AM]' | \
        sed -e 's/^ ./NEW OR MODIFY:/' ; \
        echo -n -e '\\033[m' ;\
        \
        echo -n -e '\\033[38;2;255;0;255m' ;\
        echo Rename ;\
        git status -s | grep 'R ' | \
        sed -e 's/^..//' ; \
        echo -n -e '\\033[m' ;\
    }; f"

演示

输入图像描述

解释

  1. you can write the long script on .gitconfig use the syntax as below:

    [alias]
        your-cmd = !f() { \
            \
        }; f"
    
  2. echo -n -e (see more echo)

    • -n = Do not output a trailing newline.
    • -e Enable interpretation of the following backslash-escaped
  3. \\033[38;2;255;0;0m\\033[4m (see more SGR parameters)

    • \\033[38;2;255;0;0m : 38 mean fore color. 255;0;0 = Red | r;g;b
    • \\033[4m : underline
  4. grep : The grep command is used to search text.

  5. sed -e 's/be_replace_string/new_string/' replace string to new string.


这个链接是另一个例子。 - Carson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接