我试图利用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)。
答案 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
的列格式,我在上面的评论中提到过。