如何为 Git 控制台着色?

Posted

技术标签:

【中文标题】如何为 Git 控制台着色?【英文标题】:How to color the Git console? 【发布时间】:2012-06-15 11:04:07 【问题描述】:

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

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

【问题讨论】:

从 git1.8.4 开始,你应该会默认看到颜色。见my answer below。 @VonC git 1.9.1 在 Ubuntu 14.04 上,没有发生。必须自己根据 JoelPurra 的回答设置配置。 @Izkata 很奇怪,我稍后会测试它,但是 git 2.1+ 呢? (正如我在***.com/questions/10998792/… 中评论的那样) 这是一个非常有用的颜色值、属性等链接:mirrors.edge.kernel.org/pub/software/scm/git/docs/… 【参考方案1】:

例如见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

【讨论】:

我使用的是旧版本的 git 并且设置 color.ui auto 对我不起作用,但确实如此。谢谢。【参考方案2】:

作为noted @VonC,color.ui 自 Git 1.8.4 起默认为 auto


来自 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,或者设置为false 或@987654343 @ 如果您希望 git 命令不使用颜色,除非通过其他配置或 --color 选项显式启用。

【讨论】:

这也适用于 OSX,而​​不仅仅是问题所问的 linux 可能需要在最后加上'true'。 git config --global color.ui auto true @Skeptor:不,auto 就够了。 @Phani:是的,它是持久的。 它是持久的,因为它将ui = auto 条目添加到用户的~/.gitconfig 文件中的[color] 部分。【参考方案3】:

在 Ubuntu 或任何其他平台上(是的,Windows 也是如此!);从git1.8.4 开始,即released 2013-08-23,您无需执行任何操作

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

所以你会默认看到颜色。

【讨论】:

(嗯,甚至是 Windows,取决于终端:***.com/a/12133244/6309) 在 2014 年使用 Ubuntu,安装了 git,仍然必须运行 git config --global color.ui auto。我的 Mac 也是如此,唯一默认为 auto 的是我的 Windows PC 上的 Git Bash。 @sargas 当然,你需要安装from a PPA:launchpad.net/~git-core/+archive/ppa(适用于 Ubuntu)或git-scm.com/download/mac(适用于 Mac) 我明白了,所以这取决于来源。感谢您抽出宝贵时间对此发表评论。【参考方案4】:

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

git config --global color.ui true

【讨论】:

【参考方案5】:

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

vim ~/.gitconfig

然后添加:

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

【讨论】:

@chuntao-lu 提到[color] ui = auto 就够了。【参考方案6】:

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

[color]
  ui = auto

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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 

【讨论】:

【参考方案9】:

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

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

参见commit fb0dc3b(2018 年 4 月 18 日)和 commit 0a8950b(2018 年 4 月 9 日)Taylor Blau (ttaylorr)。(由 Junio C Hamano -- gitster -- 合并于 commit e3e042b,2018 年 5 月 8 日)支持>

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

git config 长期以来一直允许调用者提供'类型 说明符',它指示git config (1) 确保传入的 values 可以解释为该类型,并且 (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,现在(documentation):

--type <type>

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

有效的&lt;type&gt; 包括:

'bool':将值规范化为“true”或“false”。 'int':将值规范化为简单的十进制数。可选的后缀 'k'、'm' 或 'g' 将在输入时将值乘以 1024、1048576 或 1073741824。 'bool-or-int':如上所述,根据'bool'或'int'进行规范化。 'path':通过在$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 年第 2 季度)解释说“git config --type=color ...”是为了替换“git config --get-color”,但存在未记录的细微差别,现已修复。

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

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

即使“git config”的较新的“--type=color”选项意味着 向上兼容传统的“--get-color”选项, 与后者不同,它的输出不是一条不完整的线,缺少 最后是LF。 这使其与“git config --type=bool”等其他类型的输出保持一致。

Document it,因为它有时会让毫无戒心的用户感到惊讶。

现在改为:

--type=color [--default=&lt;default&gt;] 优于 --get-color (但请注意,--get-color 将省略由 --type=color)。


您可以看到 git config --type=bool 与 Git 2.26(2020 年第一季度)一起用于替换示例模板中的“git config --bool”调用。

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

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

签字人:Lucius Hu

git-config--bool 选项被标记为历史,建议用户改用--type=bool。 此提交替换模板中所有出现的--bool

另请注意,未找到其他已弃用的类型选项,包括 --int--bool-or-int--path--expiry-date

【讨论】:

【参考方案10】:

参考这里: https://nathanhoad.net/how-to-colours-in-git/

步骤:

    打开 ~/.gitconfig 进行编辑

    vi ~/.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
    

    保存文件。

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

git status

【讨论】:

【参考方案11】:

好吧,如果你对默认设置不满意,你可以使用ANSI escape code帮你设置颜色,如果你想修改一些文字,你可以写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"

演示

说明

    您可以在.gitconfig 上编写长脚本,语法如下:

    [alias]
        your-cmd = !f()  \
            \
        ; f"
    

    echo -n -e(查看更多echo)

    -n = 不输出尾随换行符。 -e 启用对以下反斜杠转义的解释

    \\033[38;2;255;0;0m\\033[4m(查看更多SGR parameters)

    \\033[38;2;255;0;0m : 38 表示 fore 颜色。 255;0;0 = 红色 | r;g;b \\033[4m:下划线

    grep : grep 命令用于搜索文本。

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

【讨论】:

这个link是另一个例子。【参考方案12】:

改进 Windows 10 上的 Git 'branch-type' 颜色:显示命令 git branch -avv 所有示例...


1. Git 默认配色方案:

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


2。此页面上另一个 answer 中给出的分支颜色:

git config --system color.branch.local "黄色"
git config --system color.branch.current "黄色反转"
git config --system color.branch.remote "green"


3。可能改进的分支配色方案:

git config --system color.branch.local "黄色"
git config --system color.branch.current "亮白色黄色"
git config --system color.branch.remote "正常绿色"
git config --system color.branch.upstream "亮白青色"


4.自己制作:

指定前景色和(可选的)背景色。在 Windows 10 中生效的一组颜色是根据以下正则表达式给出的(是的,您可以使用 brightblack,它实际上非常有用):

(正常|(亮)?(黑|红|绿|黄|蓝|品红|青|白))

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

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

参数&lt;config-type&gt; 通常为--system--global。如果省略,则指定的颜色将仅应用于当前存储库。使用刚刚详述的颜色名称,您可以为特定的分支类型设置前景色&lt;fg&gt; 和背景&lt;bg&gt;,其中&lt;slot&gt; 是以下之一:

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

【讨论】:

【参考方案13】:

假设您希望当前分支为黄色 和所有其他分支为青色粗体。 我正在考虑您希望这些更改在本地完成,即在您当前的存储库中完成,而不是针对您系统中存在的所有存储库。 使用“cd .git”进入 .git 文件,然后打开“config”文件。 在配置文件中键入以下内容,而不更改配置文件中的任何其他内容。

 [color]
         ui=true
    [color "branch"]
         local=cyan bold 
         current=yellow bold

然后保存配置文件。 打开 git 控制台并执行 git branch。 你会看到区别

【讨论】:

以上是关于如何为 Git 控制台着色?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone - 如何为图像着色?

如何为 System.out.println 输出着色? [复制]

如何为滑块(sliderInput)着色?

如何为特定的 UIBarButtonItem 着色?

如何为 DBGrid 特殊单元格着色?

QSlider - 如何为空间着色