我一直关注像here和here这样的指南,介绍如何在git中区分二进制文件 - 更具体地说是.odt文件和微软word文件。
他们允许我在.odt文件和微软word文件上$git diff <commit>
显示终端的差异;但是他们的方法似乎不适用于$git difftool <commit>
二进制文件,例如.odt文件或.docx文件。
理想情况下,我想在外部程序中显示.odt文件或.docx文件的文本差异,例如来自git的kdiff3或vimdiff。
这可能吗?有没有人能够在git的外部程序中正确显示二进制文件的文本?如果是的话,有关如何为二进制文件配置difftool的任何建议吗?
答案 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 作为外部差异。