ZSH中的管道正在从Git日志输出中剥离颜色

时间:2017-10-21 05:24:51

标签: linux git zsh

我试图利用GRB的git助手(https://github.com/garybernhardt/dotfiles/blob/master/.githelpers)来打印我的git日志。

第62行的git log --graph --pretty="tformat:${LOG_FORMAT}"命令工作得很好;在iTerm中使用颜色打印。但是一旦它被传送到pretty_git_format,就没有显示颜色。

直到几周前,这已经有好几年了。我现在需要以不同的方式配置zsh的变化吗?

我使用iTerm2和zsh版本zsh 5.4.2(x86_64-apple-darwin16.7.0)。

2 个答案:

答案 0 :(得分:4)

git的默认行为是在输出打印到终端时(直接或通过git生成的寻呼机)产生颜色。当你的输出到达其他地方时,就像管道一样,git会关闭颜色。

您可以在命令行上将color.ui选项设置为always,如下所示:git -c color.ui=always log --graph --pretty="tformat:${LOG_FORMAT}"(是的,这是-c选项所在的位置)。如果您想经常这样做,可以使用.gitconfig中的shell别名来完成。

虽然可以.gitconfig中设置此内容,但您可能不希望这样做。大多数外部程序都假定颜色已关闭,如果你在.gitconfig中设置了这个,你可以打破git的其他部分以及编辑器集成等工具。

答案 1 :(得分:1)

今天,在更新到OSX High Sierra并更新我的自制软件包之后,这种情况开始发生在我身上。

我怀疑它与最新的Git版本(2.15.0)有关,因为那些release notes提到改变git log颜色的工作方式:

Fixes since v2.14
-----------------

 * "%C(color name)" in the pretty print format always produced ANSI
   color escape codes, which was an early design mistake.  They now
   honor the configuration (e.g. "color.ui = never") and also tty-ness
   of the output medium.

所以我认为Brian的解决方案可能是最好的解决方案,但我注意到它确实会影响pretty_git_format的列格式,我在上面的评论中提到过。