在
Git
网站上有关于使用 .doc
控制 Microsoft Word catdoc
文件的详细说明。
http://git-scm.com/book/en/Customizing-Git-Git-Attributes
但是,我意识到这不适用于
.docx
文件。看来您需要 docx2txt
或 unoconv
而不是 catdoc
(在此处找到)。我无缘无故地决定使用 docx2txt
,但我在将 docx2txt
安装到 Mac OS X 时陷入困境。
这说明了这些步骤。根据我的理解,您所需要的只是在某个合理的地方
docx2txt.pl
。我以为/usr/local/bin/
就可以了。我把它复制到那里。然后,根据说明,我尝试了以下方法:
$ cd /usr/local/bin/
$ echo '#!/bin/bash
docx2txt.pl "$1" -' > docx2txt
当我尝试这个时:
$ docx2txt
我得到了
Can't read docx file <>!
所以,
docx2txt
似乎就在路上。
然后我在存储库文件夹(ASCII,LF)中编辑
.gitattributes
以添加以下行:
*.docx diff=wordx
然后,我还编辑了存储库中的 .git/config 文件,如下所示:
[diff "wordx"]
binary = true
textconv = docx2txt
因为存储库已经在使用中,所以我没有这样做
git init
。我在存储库中编辑了一个 .docx Word 文件,然后在终端中输入 git diff
。但结果并不成功。
Binary files a/foo/foo.docx and b/foo/foo.docx differ
有人有什么建议吗?
感谢巴生,我做到了。现在我可以在 Mac OS X (10.9) 的 Terminal.app 中比较 .docx 文件。但这个不能与 SourceTree GUI 无缝协作。以下与巴生的基本相同,但有一些细微的修正。
从 http://docx2txt.sourceforge.net/ 下载并安装 docx2txt
转换器wget -O doc2txt.tar.gz http://docx2txt.cvs.sourceforge.net/viewvc/docx2txt/?view=tar
tar zxf doc2txt.tar.gz
cd docx2txt/docx2txt/
sudo make
然后制作一个小包装脚本,将 docx2txt 输出到 STDOUT
echo '#!/bin/bash
docx2txt.pl "$1" -' > /usr/local/bin/docx2txt
chmod +x /usr/local/bin/docx2txt
存储库中 (Word) .docx diffing 的 Git 属性
echo "*.docx diff=wordx" >> .gitattributes
git config diff.wordx.textconv docx2txt
如果设置不应与项目一起提交,请使用
.git/info/attributes
。
(Word).doc 比较的 Git 属性
echo "*.doc diff=word" >> .gitattributes
git config diff.word.textconv strings
我在我的Mac M1 上使用brew 下载docx2txt。我搜索原始文件下载的路径 /opt/homebrew/Cellar/docx2txt/1.4/bin 在那里找到了文件。 bin 目录中有两个可执行的 .sh 和 .pl 扩展文件。我运行 docx2txt.sh 文件并构建 docx2txt 文件。在文件转换过程中,您不必像提到的某些指令那样给出 lt 和 gt 符号,我认为如果您使用的是 linux/Unix,则一切都应该相同。最后一个命令应该像这样简单(docx2txt input.docx output.txt)。