# handle windows *.reg files (utf-16 which git doesn't normally like)
*.reg diff=utf16
# handle misc common document formats
*.pdf diff=pdf
*.rtf diff=catdoc
# handle libre/open document formats
*.ods diff=ods2txt
*.odp diff=odp2txt
*.odt diff=odt2txt
# handle older common ms document formats
# note: ppt did not work for me
*.doc diff=catdoc
*.ppt diff=catppt
*.xls diff=xls2csv
# handle newer zipped ms document formats
# note: pptx and xlsx did not work for me
*.docx diff=pandoc
*.pptx diff=pandoc
*.xlsx diff=pandoc
即使从their github page下载了最新版本的pandoc,我也从来没有能够成功地让diffs为xlsx、ppt或pptx工作。(v1.19.2.4 from 2016).对于我使用的xlsx/pptx示例,我总是得到“无效UTF-8流致命”(旧版本)或“UTF-8解码错误”(新版本). 这可能是由于我使用的示例文件(一些来自Web的示例和一些我通过转换LibreOffice文档创建的示例)、我的系统设置、我使用的版本或其他原因。 为了完整起见,在安装了较新的pandoc之后,我使用的是:
$ uname -vipor
5.3.0-40-generic #32~18.04.1-Ubuntu SMP Mon Feb 3 14:05:59 UTC 2020 x86_64 x86_64 GNU/Linux
$ dpkg -l catdoc odt2txt pandoc git xlsx2csv|grep '^ii'
ii catdoc 1:0.95-4.1 amd64 text extractor for MS-Office files
ii git 1:2.17.1-1ubuntu0.5 amd64 fast, scalable, distributed revision control system
ii odt2txt 0.5-1build2 amd64 simple converter from OpenDocument Text to plain text
ii pandoc 2.9.2-1 amd64 general markup converter
ii xlsx2csv 0.20+20161027+git5785081-1 all convert xslx files to csv format
有没有办法在Github上查看.docx文件? 还没有(2016年第4季度),除非Word文档是纯文本。 如何在.docx文件格式上使用git diff? 自从git for Windows 1.9.5,和Git for Windows 2.5.3(2015年9月,和issue 355),你不必做任何自定义设置:
git diff -- myWord.docx
这样就可以了。(对于.doc和.pdf也可以) 因为Git for Windows 2.10.1,你也可以对.docm和.dotm求差(参见PR 128)。 jifb在注解中添加: docx等支持基于调用的文件转换可执行文件odt2txt、antiword、docx2txt(.pl)和pdftotext(在系统范围的gitattributes和gitconfig中配置)。 rtf文件不会被转换(在Git for Windows 2.28.0中简单的“cat“),但如果是由“旧”程序(如Wordpad/Ted)生成的,则未转换的rtf也是相当的。
diff --git a/goodpoint.docx b/goodpoint.docx
index 0d6e78c..4476023 100644
--- a/goodpoint.docx
+++ b/goodpoint.docx
@@ -1,7 +1,7 @@
Making many good points
1. Overview
-- 2l3k23lk
+- this is a test
- 23lkjl2k3j
2. Remarks
7条答案
按热度按时间flvtvl501#
1.回答第二部分的问题。已经是一个老帖子,但弹出前10名没有答案。使用以下设置,你会得到一个穷人的diff对docx文件。
在. git属性中用途:
在.git/config中用途:
作为奖励,我的旧word/excel和新word/excel设置:
在. git属性中用途:
在.git/config中用途:
0lvr5msh2#
回答你的第二个问题-
通常当你尝试
您将获得以下格式的输出-
二进制文件a/文件名. docx和b/文件名. docx不同
没有太大帮助。一个完美的解决方法是使用Pandoc。
git config --global --edit
)更多详细信息请参见here。
vc6uscn93#
在Linux Mint 19.3上,公认的解决方案(使用strings / unzip)对我来说不是很好用。下面的代码似乎对大多数doc/docx/rtf/xls文件以及它们的LibreOffice对应文件都很好用。其中一些可以通过cygwin/git bash在Windows上工作,但我没有测试过;如果我提到的包在cygwin/git bash中不可用,那么我会寻找进行相同转换的python/perl脚本,并用它们来代替。
1.安装先决条件:
sudo apt install git pandoc catdoc odt2txt
.1.注意cadoc和odt 2 txt包含了多个处理doc/xls/ppt/odt/ods/odp格式的工具,而不仅仅是包名中的那些。
1.我希望我的属性以Global (e.g. User-scoped)的形式应用,而不是像其他答案中那样以每个项目的形式应用。要创建用户作用域的git属性文件,请使用
mkdir ~/.config/git/ && touch ~/.config/git/attributes
(在Windows上应该是mkdir "%USERPROFILE%\.config\git" && echo "" > "%USERPROFILE%\.config\git\attributes"
)1.安装git属性文件(根据需要,可以是上一步中提到的用户作用域文件或项目作用域文件
${projectDir}/.git/info/attributes
):1.创建.gitconfig定义(在用户作用域
~/.gitconfig
中或在项目作用域${projectDir}/.git/config
中)。即使从their github page下载了最新版本的pandoc,我也从来没有能够成功地让diffs为xlsx、ppt或pptx工作。(v1.19.2.4 from 2016).对于我使用的xlsx/pptx示例,我总是得到“无效UTF-8流致命”(旧版本)或“UTF-8解码错误”(新版本).
这可能是由于我使用的示例文件(一些来自Web的示例和一些我通过转换LibreOffice文档创建的示例)、我的系统设置、我使用的版本或其他原因。
为了完整起见,在安装了较新的pandoc之后,我使用的是:
编辑:我也试过用
xlsx2csv
包来代替pandoc进行xlsx转换,我也遇到了问题。可能是我的样本有问题,但是因为我没有做任何特别的事情来创建它们,所以我认为这是xlsx 2csv/pandoc的覆盖率差距/限制。wrrgggsh4#
有没有办法在Github上查看.docx文件?
还没有(2016年第4季度),除非Word文档是纯文本。
如何在.docx文件格式上使用git diff?
自从git for Windows 1.9.5,和Git for Windows 2.5.3(2015年9月,和issue 355),你不必做任何自定义设置:
这样就可以了。(对于
.doc
和.pdf
也可以)因为Git for Windows 2.10.1,你也可以对
.docm
和.dotm
求差(参见PR 128)。jifb在注解中添加:
docx
等支持基于调用的文件转换可执行文件odt2txt
、antiword
、docx2txt
(.pl
)和pdftotext
(在系统范围的gitattributes
和gitconfig
中配置)。rtf
文件不会被转换(在Git for Windows 2.28.0中简单的“cat
“),但如果是由“旧”程序(如Wordpad/Ted)生成的,则未转换的rtf
也是相当的。b91juud35#
在对Stackoverflow和Google三心二意地转悠了几年之后,我今天才发现官方的git书有一个walkthrough。
1.安装
docx2txt
。在Ubuntu 16.04上,我只使用了官方存储库:1.编写 Package 脚本(
docx2txt
需要一些参数),如下所示:1.我把这个脚本命名为
d2t
,所以我把它添加到我的$PATH
中的一个文件夹里。记得把它设置成可执行的,这样git就可以运行它了。1.现在,通过将这个块添加到
.git/config
中,让仓库知道这一点:--global
标志一起使用,以便将此筛选器应用于所有存储库(如果您愿意):1.对于您希望使用此功能的存储库,请编辑
.gitattributes
:1.现在你应该能够
git diff
你的docx文档。编辑:在git 2.7.4上试过了。你不能在补丁中不做更多的工作就使用
checkout
和add
。polkgigr6#
一个
.docx
文件实际上是一个zip文件(你可以改变文件类型并在里面查看)。如果.docx
被当作一个目录,那么在主文件里面存储的是一个XML样式文件,它是文本文件,而不是二进制文件。遗憾的是没有回车符。否则在目录中对'document.xml'文件进行文本比较将非常有用。作为XML文件,文件中的换行符不会影响内容,因此可以添加它们。
tp5buhyn7#
这是有问题的,据我所知,这在github或其他git主机上是不可能的。虽然git可以用来版本化任何东西,但像git diff这样的东西会以纯文本的形式返回两个版本的差异。难以辨认。
我觉得这并不是没有原因的。世界上有无限的文件格式,其中很多都是专有的。因此,Git不支持像VLC这样的每一种格式,而是使用文本文件。
另外,即使git支持docx,它也无法在终端中显示格式更改,更不用说cmd了。如果只是文本,最好将其存储为文本文件。或者手动 checkout 以前的版本来比较更改。