2

我一直在关注这里这里关于如何在 git 中区分二进制文件的指南——更具体地说是 .odt 文件和 microsoft word 文件。

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

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

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

4

1 回答 1

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 到文本的转换并融合为外部差异。

于 2020-04-18T13:15:09.440 回答