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

标签 git git-diff binaries git-difftool

我一直在遵循这些指南 herehere关于如何在 git 中区分二进制文件 - 更具体地说是 .odt 文件和 Microsoft word 文件。

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

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

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

最佳答案

最近遇到了同样的问题。

来自 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 到文本的转换,并使用 meld 作为外部差异。

关于git - 二进制文件上的 git difftool 可能吗?如果是这样,如何配置它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098218/

相关文章:

git - 如何在不公开存储库的情况下让所有 GitLab 用户访问所有存储库?

暂存文件的 Git 列表

git - 如何读取 git diff 的输出?

mysql - 我可以获得使用 SSL 支持构建的 Windows MySQL Community 5.6 二进制文件吗?

git - 前端+后端存储库中每个子任务的每个功能\故事\史诗VS分支?

git - 冲突时,GitHub for Windows 将我置于 "rebasing"状态,如何从那里开始?

git克隆一个与我的linux用户不同的用户的存储库

git diff 将整个文件视为已更改,但未更改

c++ - 将二进制文件添加到其他人的柯南食谱中

从二进制文件 bin 文件夹命令 "command not found"安装 mysql