将`git difftool`管道传输到寻呼机时如何保留颜色
Posted
技术标签:
【中文标题】将`git difftool`管道传输到寻呼机时如何保留颜色【英文标题】:How to retain color when piping `git difftool` to pager 【发布时间】: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,我在外部difftool
diff
命令中缺少--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=always
。 git difftool -x 'diff --color=always -y -W 50' | less -R
为我工作。
【参考方案1】:
颜色不是来自git
它们来自外部差异工具,所以这决定了是否使用颜色。所以你需要使用-x "diff --color=always ..."
告诉diff
使用颜色,即使输出没有到终端。
【讨论】:
我无法让它工作。git difftool -y -x 'diff --color=always'
导致一堆 diff: unrecognized option '--color=always'
以上是关于将`git difftool`管道传输到寻呼机时如何保留颜色的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Mac 上将 Xamarin 输出通过管道传输到 less 中?
如何将git的STDERR输出通过管道传输到findstr以获得实际结果?