git difftool对二进制文件有可能吗?如果是这样,如何配置它?

时间:2015-12-04 22:01:29

标签: git git-diff binaries git-difftool

我一直关注像herehere这样的指南,介绍如何在git中区分二进制文件 - 更具体地说是.odt文件和微软word文件。

他们允许我在.odt文件和微软word文件上$git diff <commit>显示终端的差异;但是他们的方法似乎不适用于$git difftool <commit>二进制文件,例如.odt文件或.docx文件。

理想情况下,我想在外部程序中显示.odt文件或.docx文件的文本差异,例如来自git的kdiff3或vimdiff。

这可能吗?有没有人能够在git的外部程序中正确显示二进制文件的文本?如果是的话,有关如何为二进制文件配置difftool的任何建议吗?

1 个答案:

答案 0 :(得分:1)

最近遇到了同样的问题。

来自https://git-scm.com/docs/gitattributes

A textconv, by comparison, is much more limiting. You provide a transformation of the data into a line-oriented text format, and Git uses its regular diff tools to generate the output.

简单地说, textconv 仅适用于常规git diff,不适用于 difftool

要使 difftool 工作,请将以下内容放入$ HOME / .gitconfig:

[difftool "docx"]
    cmd = t1=`mktemp` && `pandoc -t plain $LOCAL >$t1` && t2=`mktemp` && `pandoc -t plain $REMOTE >$t2` && meld $t1 $t2 && rm -f $t1 $t2

现在您可以运行:

$ git difftool --tool docx

以上使用 pandoc 将docx转换为文本,并使用 melt 作为外部差异。