在OSX中通过管道将'git log'输出到'head'时保留颜色

12

我在我的bashrc文件中有以下别名。

alias gl="git log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"
alias glh="gl | head -n 20"

两个别名都用于以彩色打印git历史记录的输出。但是随着Git更新到git版本2.19.1glh停止以彩色打印输出。gl仍然以彩色打印输出。是否有办法强制git log保持颜色,即使它被输送到head

操作系统:

ProductName:    Mac OS X
ProductVersion: 10.11.6
BuildVersion:   15G22010

7
使用 --color 选项? - eftshift0
8
也许可以使用 git log -n 20 命令显示最近的 20 个提交记录,而不是使用 head 命令。 - alfunx
以上两种方法都有效,谢谢! - Nickolay Kondratyev
“--color” 更好,因为还有其他管道命令也会阻止着色(在我的情况下是正则表达式操作)。 - Sridhar Sarnobat
1个回答

6
你可以指定--color=always并将其管道到另一个程序,该程序必须解释颜色转义序列,或者你可以去掉管道符号,并直接使用git log -n20来仅显示最后20次提交。(注意,后者可能会给出与使用head不同的结果。)

我会在 git log 后面添加 --color=always,但这可能不适用于其他一些 git 命令。请参考更详细的答案 - Masa Sakano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接