如何对 git 的输出进行着色?

如何对 git 的输出进行着色?

有没有办法为 git (或任何命令)的输出着色?

考虑:

baller@Laptop:~/rails/spunky-monkey$ git status
# On branch new-message-types
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   app/models/message_type.rb
#
no changes added to commit (use "git add" and/or "git commit -a")
baller@Laptop:~/rails/spunky-monkey$ git add app/models

baller@Laptop:~/rails/spunky-monkey$ git status
# On branch new-message-types
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   app/models/message_type.rb
#

输出看起来相同,但信息完全不同:文件已从未暂存状态变为已暂存状态以便提交。

有没有办法对输出进行着色?例如,未暂存的文件是红色,已暂存的文件是绿色?

或者甚至是Changes not staged for commit:红色和# Changes to be committed:绿色?

在 Ubuntu 中工作。

编辑:谷歌搜索发现这个答案非常有效:git config --global --add color.ui true

但是,是否有更通用的解决方案可以为命令输出添加颜色?

答案1

[color]您可以在您的中创建一个部分~/.gitconfig,例如包含以下内容

[color]
  diff = auto
  status = auto
  branch = auto
  interactive = auto
  ui = true
  pager = true

您还可以精细控制您想要以何种方式着色,例如

[color "status"]
  added = green
  changed = red bold
  untracked = magenta bold

[color "branch"]
  remote = yellow

我希望这能让你开始。当然,您需要一个支持颜色的终端。

另请参阅这个答案了解直接从命令行添加着色的方法。

答案2

您可能想使用

git config --global color.ui auto

auto部分表示 git 只会尝试在支持它的终端上使用颜色,并且如果将 git 命令的输出重定向到文件,您将不会获得 ANSI 序列。设置为true与 相同auto,这也是 Git 1.8.4 以来的默认设置。

这是一个元配置,包括git 命令可用的color.ui所有各种配置。color.*

这在 中进行了深入解释git help config

color.ui设置为always它时,它将始终发出 ANSI 颜色字符,即使在管道输出时,如git log | less设置为它时,auto也不会打印颜色,除非输出到终端。

答案3

接受的答案给出了最常见的解决方案。如果出于任何原因您不需要永久更改配置(该解决方案会这样做),您可以覆盖单个 git 命令的配置:

git -c color.ui=always <usual git command and options>

例如:

git -c color.ui=always status
git -c color.ui=always diff

测试:在 git 2.4.6 上支持,不是git 1.7.1 支持。

答案4

git config --global color.ui always
git config --global color.branch always
git config --global color.diff always
git config --global color.interactive always
git config --global color.status always
git config --global color.grep always
git config --global color.pager true
git config --global color.decorate always
git config --global color.showbranch always

相关内容