如何给Git控制台上色?

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

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

202213 次浏览

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

作为指出 by @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.diff0:这个变量决定了诸如color.diffcolor.grep等变量的默认值,这些变量控制每个命令族的颜色使用。它的范围将随着更多命令学习配置来为--color选项设置默认值而扩展。如果你想要所有输出都不打算让机器使用颜色,将其设置为always;如果你想要这样的输出在写到终端时使用颜色,则将其设置为trueauto;如果你希望git命令不使用颜色,则设置为falsenever,除非显式启用了一些其他配置或--color选项。

在Ubuntu或任何其他平台(是的,Windows也是!);开始git1.8.4,它是公布的2013-08-23你什么都不用做:

许多教程教用户设置“颜色”。将“user.name/email”设置为“auto”后的第一件事,将自己介绍给Git。现在变量默认为"auto"。

所以默认情况下你会看到颜色。

如果您要求,Git会自动为大部分输出上色。你可以非常具体地说明你想要什么颜色以及如何着色;但是要打开所有默认的终端颜色,请设置颜色。UI为true:

git config --global color.ui true

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

vim ~/.gitconfig

然后加上:

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

在你的~/.gitconfig文件中,简单地添加这个:

[color]
ui = auto

它负责所有的git命令。

添加到你的.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默认使用彩色输出,但在某些系统上,如CentOS,它是不启用的。您可以像这样启用它

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

您可以从这里选择所需的命令。

这里——全球是可选的,用于为系统中的每个存储库应用操作。如果你只想为当前存储库应用着色,那么你可以这样做-

 git config color.ui  true
在Git 2.18中,你可以更多地控制你想要在控制台上指定的颜色 "git config"命令使用单独的选项。"--int", "--bool",等等。

引入了一个新的"--type=<typename>"选项,它可以更清晰地定义新类型。

参见提交fb0dc3b(2018年4月18日)和提交0 a8950b(2018年4月09日)by 泰勒·布劳(ttaylorr) (由Junio C Hamano—gitster提交e3e042b中合并,08 May 2018)

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

git config一直允许调用者提供一个'类型 它指示git config(1)确保传入的 值可以被解释为该类型,(2)输出值是

在另一个系列中,我们建议使用扩展此功能

. --type=color--default替换--get-color 然而,我们传统上使用--color来表示“对输出进行着色”, 而不是"this value should be treatment as a color".

目前,git config不支持这种着色,但是 我们应该注意避免过早地选择这个选项,这样 中的git config可以支持--color(传统意义上的)

在这个补丁中,我们支持--type=<int|bool|bool-or-int|...> In --int--bool,等等,
这允许前面提到的即将到来的补丁支持通过--type=color --default=...查询默认颜色值,而不会浪费--color.

我们保留了历史上的抱怨行为, 遗留风格的--<type>标志被给出,并将其扩展为 冲突的新样式--type=<type>标志。--int --type=int(和它的 但是--bool --type=int(和它的

所以之前你有--bool--int,现在(文档):

--type <type>

'git config'将确保任何输入或输出在给定类型约束下都是有效的,并将<type>'s中的输出值规范化 规范形式。< / p >

有效的<type>包括:

  • '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 (Q2 2019)解释说“git config --type=color ...”是为了取代“git config --get-color”,但有一个微小的差异没有被记录下来,现在已经修复了。

参见提交cd8e759 (05 Mar 2019) by 杰夫·金(peff) (由Junio C Hamano—gitster提交f6c75e3中合并,20 Mar 2019)

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

即使更新的“--type=color”选项到“git config”意味着 向上兼容传统的"--get-color"选项, 与后者不同的是,它的输出不是缺少的不完整的行 在结尾的LF。
这使得它与其他类型的输出(如"git config --type=bool")一致

记录它,因为它有时会让不知情的用户感到惊讶。

现在是这样写的:

--type=color [--default=<default>]优先于--get-color (但注意--get-color将省略由 --type=color)。< / p >


你可以看到Git 2.26 (Q1 2020)中使用git config --type=bool来取代样例模板中的“git config --bool”调用。

参见提交81年e3db4 (19 Jan 2020) by Lucius Hu (lebensterben) (由Junio C Hamano—gitster提交7050624中合并,30 Jan 2020)

templates:修复已弃用的类型选项--bool

署名:Lucius Hu

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

还要注意的是,没有找到其他被弃用的类型选项,包括--int--bool-or-int--path--expiry-date

< p >参考: https://nathanhoad.net/how-to-colours-in-git/ < / p >

步骤:

  1. < p > ~ /开放。Gitconfig用于编辑

    六世~ / .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

好吧,如果你对默认设置不满意,你可以使用ANSI转义码来帮助你设置颜色,如果你想修改一些文本,你可以写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(参见更多回声)

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

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

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

在Windows 10上改进Git的“分支类型”颜色:

显示命令 git branch -avv 对于所有的例子…


1. Git默认配色方案: < br >

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

enter image description here


2. Branch colors given in another answer on this page:

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.可能改进的分支配色方案: < br >

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. 自己制作: < br >

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

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

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

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

参数<config-type>通常是--system--global。如果省略,指定的颜色将只应用于当前的repo。使用刚才详细介绍的颜色名称,你可以为特定的分支类型设置前景<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

让我们假设你想要当前的分支是黄色的 所有其他分支都是青色粗体。 我正在考虑您希望这些更改在本地完成,即在您当前的存储库中,而不是在您的系统中存在的所有存储库。 进入。git文件使用“;cd .git"然后打开“config”;文件。 在配置文件中输入以下内容,而不改变配置文件中的任何其他内容
 [color]
ui=true
[color "branch"]
local=cyan bold
current=yellow bold

然后保存配置文件。 打开git控制台并执行git分支。 您将看到差异