我最近看到Windows中的git控制台是有颜色的,例如,绿色表示添加,红色表示删除等等。我怎么给git控制台上色呢?

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


当前回答

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

git config --global color.ui true

其他回答

好吧,如果你对默认设置不满意,你可以使用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"

demo

解释

you can write the long script on .gitconfig use the syntax as below: [alias] your-cmd = !f() { \ \ }; f" echo -n -e (see more echo) -n = Do not output a trailing newline. -e Enable interpretation of the following backslash-escaped \\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 grep : The grep command is used to search text. sed -e 's/be_replace_string/new_string/' replace string to new string.

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

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

然后保存配置文件。 打开git控制台,执行git分支。 你会发现其中的差别

正如@VonC所指出的,color。ui从Git 1.8.4开始默认为auto


从Unix和Linux Stackexchange问题如何着色输出的git?以及@Evgeny的回答:

git config --global color.ui auto

这颜色。UI是一个元配置,包括所有不同的颜色。*配置可用的git命令。这在git帮助配置中有深入的解释。

基本上,这比设置不同的颜色更简单,更经得起考验。*单独设置。

git配置文档的深入解释:

color.ui: This variable determines the default value for variables such as color.diff and color.grep that control the use of color per command family. Its scope will expand as more commands learn configuration to set a default for the --color option. Set it to always if you want all output not intended for machine consumption to use color, to true or auto if you want such output to use color when written to the terminal, or to false or never if you prefer git commands not to use color unless enabled explicitly with some other configuration or the --color option.

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 

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

引入了一个新的"——type=<typename>"选项,这将使定义新类型更加清晰。

参见Taylor Blau (Taylor)提交fb0dc3b(2018年4月18日)和提交0a8950b(2018年4月09日)。 (由Junio C Hamano—gitster—在commit e3e042b中合并,2018年5月8日)

builtin/config.c: support --type=<type> as preferred alias for --<type> git config has long allowed the ability for callers to provide a 'type specifier', which instructs git config to (1) ensure that incoming values can be interpreted as that type, and (2) that outgoing values are canonicalized under that type. In another series, we propose to extend this functionality with --type=color and --default to replace --get-color. However, we traditionally use --color to mean "colorize this output", instead of "this value should be treated as a color". Currently, git config does not support this kind of colorization, but we should be careful to avoid squatting on this option too soon, so that git config can support --color (in the traditional sense) in the future, if that is desired. In this patch, we support --type=<int|bool|bool-or-int|...> in addition to --int, --bool, and etc. This allows the aforementioned upcoming patch to support querying a color value with a default via --type=color --default=..., without squandering --color. We retain the historic behavior of complaining when multiple, legacy-style --<type> flags are given, as well as extend this to conflicting new-style --type=<type> flags. --int --type=int (and its commutative pair) does not complain, but --bool --type=int (and its commutative pair) does.

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

--type <type>

'git config' will ensure that any input or output is valid under the given type constraint(s), and will canonicalize outgoing values in <type>'s canonical form. Valid <type>'s include: 'bool': canonicalize values as either "true" or "false". 'int': canonicalize values as simple decimal numbers. An optional suffix of 'k', 'm', or 'g' will cause the value to be multiplied by 1024, 1048576, or 1073741824 upon input. 'bool-or-int': canonicalize according to either 'bool' or 'int', as described above. 'path': canonicalize by adding a leading ~ to the value of $HOME and ~user to the home directory for the specified user. This specifier has no effect when setting the value (but you can use git config section.variable ~/ from the command line to let your shell do the expansion.) 'expiry-date': canonicalize by converting from a fixed or relative date-string to a timestamp. This specifier has no effect when setting the value.

--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”,但有一个细微的差异没有被记录下来,现在已经修复了。

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

配置:document——type=color输出是一个完整的行 即使更新的"——type=color"选项是指"git config" 为了与传统的"——get-color"选项向上兼容, 与后者不同的是,它的输出不是缺少的不完整的行 最后的LF。 这使得它与其他类型的输出一致,如“git config——type=bool”。 记录它,因为它有时会让不知情的用户感到惊讶。

现在是这样写的:

——type=color[——default=<default>]优先于——get-color (但请注意——get-color将省略打印的末尾换行符 ——类型=颜色)。


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

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

模板:修复已弃用的类型选项——bool 署名:Lucius Hu git-config的——bool选项被标记为历史的,建议用户使用——type=bool来代替。 此提交将替换模板中出现的所有——bool类型。 还要注意,没有找到其他不推荐的类型选项,包括——int、——boolo -or-int、——path或——expiry-date。