如何为Git控制台着色?

时间:2012-06-12 14:30:00

标签: git colors console

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

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

11 个答案:

答案 0 :(得分:656)

noted @VonCcolor.ui默认为auto,因为Git 1.8.4


来自Unix& Linux Stackexchange问​​题How to colorize output of git?answer by @Evgeny

git config --global color.ui auto
  

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

所以基本上它比单独设置不同的color.*设置更简单,更具前瞻性。

来自git config documentation的深入解释:

  

color.ui :此变量确定控制每个命令系列颜色使用的变量(如color.diffcolor.grep)的默认值。随着更多命令学习配置以设置--color选项的默认值,其范围将扩展。如果您希望所有不是用于机器消耗的输出使用颜色,请将其设置为always,如果您希望此类输出在写入终端时使用颜色,则设置为trueauto,或者falsenever如果您更喜欢使用git命令,除非使用其他配置或--color选项明确启用,否则不要使用颜色。

答案 1 :(得分:53)

例如,请参阅https://web.archive.org/web/20080506194329/http://www.arthurkoziel.com/2008/05/02/git-configuration/

有趣的部分是

  

彩色输出:

git config --global color.branch auto
git config --global color.diff auto
git config --global color.interactive auto
git config --global color.status auto

答案 2 :(得分:27)

将下一个代码添加到.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

答案 3 :(得分:7)

如果您要求,Git会自动为其大部分输出着色。你可以非常具体地了解你想要的颜色和方式;但要打开所有默认的终端着色,请将color.ui设置为true:

git config --global color.ui true

答案 4 :(得分:6)

在Ubuntu或任何其他平台上(是的,Windows也是!);开始git1.8.4released 2013-08-23你不需要做任何事情

  

许多教程教会用户将“color.ui”设置为“auto”作为设置“user.name/email”以向Git介绍自己之后的第一件事。 现在变量默认为“auto”。

因此默认情况下您会看到颜色。

答案 5 :(得分:6)

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

[color]
  ui = auto

它会处理你所有的git命令。

答案 6 :(得分:5)

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

vim ~/.gitconfig

然后添加:

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

答案 7 :(得分:5)

GIT默认使用彩色输出,但在像CentOS这样的系统上它没有启用。您可以像这样启用它

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

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

此处 - 全局是可选的,可为系统中的每个存储库应用操作。如果您只想为当前存储库应用着色,那么您可以执行以下操作 -

 git config color.ui  true 

答案 8 :(得分:1)

使用Git 2.18,您可以更好地控制在控制台中指定颜色的方式 " git config"命令使用单独的选项,例如" --int"," --bool"等指定调用者希望将值解释为的类型。

新的&#34; --type=<typename>&#34;已经引入了选项,这将使定义新类型更加清晰。

commit fb0dc3bcommit 0a8950b(2018年4月18日)和Taylor Blau (ttaylorr)(2018年4月9日)Junio C Hamano -- gitster --(由commit e3e042b合并于documentation,2018年5月8日)

  

builtin/config.c:支持--type=<type>作为--<type>

的首选别名      

git config长期以来一直允许呼叫者提供“#”类型   说明符&#39;,指示git config(1)确保传入   值可以解释为该类型,以及(2)传出值   在那种类型下规范化。

     

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

     

但是,我们传统上使用--color来表示&#34;将此输出着色&#34;,   而不是&#34;这个值应该被视为一种颜色&#34;。

     

目前,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之前,现在(commit cd8e759):

--type <type>
  

&#39; git config&#39;将确保任何输入或输出在给定类型约束下有效,并将规范化<type>中的传出值     规范形式。

     

有效<type>包括:

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

请注意,Git 2.22(2019年第二季度)解释了&#34; git config --type=color ...&#34;是为了取代&#34; git config --get-color&#34;,但是有一些细微的差别没有记录,现在已经修复了。

Jeff King (peff)Junio C Hamano -- gitster --(2019年3月5日) (由commit f6c75e3合并于Document it,2019年3月20日)

  

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

     

即使是较新的&#34; --type=color&#34; &#34; git config&#34;的选项是指   向上兼容传统&#34; --get-color&#34;选项,   与后者不同,它的输出不是缺乏的不完整线   最后的LF。
  这使得它与其他类型的输出一致,例如&#34; git config --type=bool&#34;。

     

{{3}},因为它有时会令毫无疑问的用户感到惊讶。

现在写着:

  

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

答案 9 :(得分:1)

好吧,如果您对默认设置不满意,可以使用ANSI escape code来帮助设置颜色,如果要修改某些文本,可以编写bash来帮助您。如下所示:

Eaxmplae

# .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"

演示

enter image description here

说明

  1. 您可以使用以下语法在.gitconfig上写长脚本:

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

    • -n =不输出尾随换行符。
    • -e启用对以下反斜杠转义的解释
  3. \\033[38;2;255;0;0m\\033[4m(更多SGR parameters

    • \\033[38;2;255;0;0m:38表示之前颜色。 255; 0; 0 = 红色 | r; g; b
    • \\033[4m:下划线
  4. grep:grep命令用于搜索文本。

  5. sed -e 's/be_replace_string/new_string/'将字符串替换为新字符串。

答案 10 :(得分: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
相关问题