为 Git 控制台着色

John Wachira 2023年1月30日
  1. Git color.ui
  2. Git 颜色值
  3. Git 颜色配置
为 Git 控制台着色

本文将讨论我们如何配置我们的 Git 终端以具有彩色输出。我们可以根据自己的喜好自定义终端,以便于使用。

我们将使用 git config 命令来设置颜色值。让我们开始吧。

Git color.ui

Git color.ui 是指处理 Git 颜色时的主变量。要在我们的 Git 终端中禁用颜色,我们必须将其设置为 false,如下所示。

$ git config --global color.ui false

一个新的 Git 终端将变量设置为 auto。这为直接终端输出流提供了颜色,并省略了管道输出到另一个进程或定向到文件的颜色代码。

我们可以将其设置为 always 以包括上述豁免;但是,当接收管道不期望有彩色输入时,我们可能会遇到问题。

$ git config --global color.ui always

Git 颜色值

除了 color.ui,Git 还支持其他粒度颜色配置,可以设置为 alwaysautofalse。这些设置具有指定的颜色值。

Git 支持正常、黑色、红色、绿色、黄色、蓝色、洋红色、青色和白色等颜色值。

如果我们的终端支持,我们可以使用像 #ff0000 这样的十六进制颜色代码来指定颜色。

Git 颜色配置

1. color.branch

我们使用这个命令来配置 git branch 命令的输出颜色。我们可以在以下上下文中使用它。

$ git config --global color.branch <slot>

<slot> 可以是以下任何一种。

  1. current:这是指当前分支。
  2. local:指我们仓库中的本地分支。
  3. remote:指 ref/remotes 中的远程分支引用。
  4. upstream:指上游跟踪 Git 分支。
  5. plain:任何其他 ref

2. color.diff

我们使用这个命令来配置 git diffgit loggit show 命令的输出颜色。我们可以使用它,如下所示。

$ git config --global color.diff <slot>

<slot> 可以是以下任何一种。

  1. context:这是指显示在 diff 或补丁中以显示更改的文本内容行。
  2. plain:这是 context 的同义词。
  3. meta:指 git diff 上的元信息。
  4. frag:指向大块头或大块头中存在的函数。
  5. old:指向 diff 中已删除的代码行。
  6. new:指向 diff 中添加的代码行。
  7. commit:指 diff 中的提交标头。
  8. whitespace:为 git diff 中的空白错误设置颜色。

3. 颜色.状态

此布尔值配置或禁用 git status 命令的颜色编码输出。我们可以在下面的上下文中使用它。

$ git config --global color.status <slot>

<slot> 可以是以下任何一种。

  1. header:指向状态显示的标题内容。
  2. 添加更新:两者都针对任何已添加但未提交的文件。
  3. changed:这指向未添加到索引中的已修改文件。
  4. branch:指向当前分支。
  5. untracked:指向所有未跟踪的文件。
  6. unmerged:指向具有未合并更改的文件。

4. color.grep

该命令会将颜色应用于我们的 git grep 输出。我们可以在下面的上下文中使用它。

$ git config --global color.grep <slot>

<slot> 可以是以下任何一种。

  1. context:指向上下文行中不匹配的文本。
  2. filename:指向文件名前缀。
  3. function:指向函数名称行。
  4. linenumber:指向行号前缀。
  5. match:指匹配文本。
作者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn