1 MS Office

如果作为开发人员,工作场合需要经常使用 MS Office,那么在尝试比较 MS Office 文件时会遇到一些问题。

也许你在问自己:这有什么问题?

这是:MS Office 将生成 Git 无法比较的二进制文件。

之前在 Windows 平台下,我们使用的文本转换工具,将二进制文件转化为text,然后再diff。

  • catdoc(用于 Word)
  • xls2csv(用于 Excel)
  • catppt(用于幻灯片)

2 寻找新的方案

目前主要使用MacOS系统,想看看有没有更好的方案?

通过搜索,发现一个更通用的文本转换工具:textract。它不仅支持Office全家桶,还支持pdf,图片(png, jpg)等。 真可谓是,集各派武功之大成。

textract 是采用 node.js 编写,我们可以使用 npm 工具安装。

1
npm install --global textract

3 配置 Git

3.1 配置 diff 工具

修改 Git 项目配置 vim .git/config(全局配置: ~/.gitconfig), 追加如下内容:

1
2
3
[diff "bin2text"]
	textconv = textract
	binary = true

您也可以在控制台中执行相同的操作,而无需打开文件:

1
2
git config --global diff.bin2text.textconv textract
git config --global diff.bin2text.binary true

2.2 配置 .gitattributes

在某个git项目中,创建配置文件.gitattributes, 指定使用 diff 工具即可。

1
2
3
4
*.pptx diff=bin2text
*.docx diff=bin2text
*.xlsx diff=bin2text
*.png  diff=bin2text

参考