【问题标题】:How to retain color when piping `git difftool` to pager将`git difftool`管道传输到寻呼机时如何保留颜色
【发布时间】:2018-03-06 14:28:53
【问题描述】:

我无法获得:

git difftool -b -y -x "diff --color --suppress-common-lines -y -w -W 200" master:file.txt file.txt

在管道到less -R 时保留其彩色输出。我做错了什么?

我想我已经尝试了所有 git color config 选项,例如

git -c color.ui=always difftool --color=always -b -y -x "diff --color --suppress-common-lines -y -w -W 200" master:file.txt file.txt | less -R

但是没有颜色。一旦我将管道移至less -R,我就会看到彩色输出。有什么想法吗?

编辑:感谢@jonathan-wakely,我在外部difftooldiff 命令中缺少--color 选项的=always 参数。现在,当管道减少时,这会保持颜色:

git difftool -b -y -x "/usr/local/bin/diff --color=always --suppress-common-lines -y -w -W 200" master:file.txt file.txt

【问题讨论】:

  • 您确定您的意思是difftool,而不仅仅是diff?因为difftool 为每个文件调用diff 工具(如vimdiff),而不是通过管道将diff 传递到std 输出。 difftool你配置了什么?
  • git diff --color=always | less -R 适合我,完美显示颜色。
  • @phd 我使用 diff 和并排 (-y -W 200) 选项作为外部 difftool
  • 那么你需要在“工具”中--color=alwaysgit difftool -x 'diff --color=always -y -W 50' | less -R 为我工作。

标签: git colors pager less-unix


【解决方案1】:

颜色不是来自git 它们来自外部差异工具,所以这决定了是否使用颜色。所以你需要使用-x "diff --color=always ..." 告诉diff 使用颜色,即使输出没有到终端。

【讨论】:

  • 我无法让它工作。 git difftool -y -x 'diff --color=always' 导致一堆 diff: unrecognized option '--color=always'
猜你喜欢
  • 2023-01-11
  • 2017-01-07
  • 2023-03-15
  • 2019-01-24
  • 2011-01-20
  • 2012-03-31
  • 1970-01-01
  • 2020-03-20
  • 2012-10-28
相关资源
最近更新 更多