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

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


当前回答

在Ubuntu或任何其他平台(是的,Windows也是!);从2013年8月23日发布的git1.8.4开始,你不需要做任何事情:

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

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

其他回答

改进win10上Git“branch-type”的颜色:在所有示例中显示命令Git branch -avv


1. Git默认配色方案:

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


2. 在本页的另一个答案中给出的分支颜色:

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


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"


4. 自己制作:

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

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

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

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

参数<config-type>通常是——system或——global。如果省略,指定的颜色将只应用于当前的repo。使用刚才详细介绍的颜色名称,您可以为特定的分支类型设置前景色<fg>和背景<bg>颜色,其中<slot>是以下之一:

电流(当前支路) 本地(本地分支机构) Remote (refs/remotes/中的远程跟踪分支) 上游(上游跟踪分支) 平原

像往常一样,你可以通过以下命令显示你的整个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 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。

在你的~/。Gitconfig文件,简单地添加这个:

[color]
  ui = auto

它负责所有的git命令。

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

vim ~/.gitconfig

然后加上:

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

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