有没有办法为 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