git diff 不适用于 Word 文档、--intent-to-add 和 pandoc diff 驱动程序
git diff not working with Word document, --intent-to-add, and pandoc diff driver
可以在 Internet 上找到的几个教程 ([1], [2], [3]) 建议使用以下配置来区分 git
.
跟踪的 Word 文档
使用以下设置配置 "pandoc" diff 驱动程序:
[diff "pandoc"]
textconv=pandoc --to=markdown
prompt = false
将以下内容添加到您的 .gitattributes
文件中:
*.docx diff=pandoc
这似乎工作正常,除非在指示将其添加到 git 存储库的意图后尝试区分未跟踪的 Word 文档。有谁知道为什么这在这种情况下不起作用?
这里是重现的步骤,假设上面详述了以下配置。
在 git 存储库中创建 Word 文档
touch my_document.docx
在Microsoft Word中打开文件,在Word文档中添加一些内容(例如,字符"asdf"),并保存
表明您打算添加文档
git add -N my_document.docx
尝试查看差异:
git diff my_document.docx
#> couldn't parse docx file
#> fatal: unable to read files to diff
在 macOS 上使用 git
版本 2.17.1,我最终遇到 "fatal: unable to read files to diff" 错误。但是,仅将文件添加到索引然后 运行 git diff --cached
会导致以下差异:
diff --git a/my_document.docx b/my_document.docx
new file mode 100644
index 0000000..17f1b0d
--- /dev/null
+++ b/my_document.docx
@@ -0,0 +1 @@
+asdf
为什么 diff 驱动程序不能与 git add -N
一起工作?
这最终是由于 pandoc --to=markdown /dev/null/
正确地 returns 没有错误输出,而 pandoc --to=markdown a/my_document.docx
错误输出只是为了防止 a/my_document.docx
是一个空文件。
所以在你第一次添加my_document.docx
到索引然后运行git diff --cached
比较索引和HEAD的情况下,比较会反/dev/null
,一切都会好起来的。
但是,如果您已表明要添加新文件 my_document.docx
和 git add -N
,则会将同名的空文件添加到索引中。在这种情况下,pandoc
尝试将索引中的空文件转换为 Markdown 时会出错。
可以在 Internet 上找到的几个教程 ([1], [2], [3]) 建议使用以下配置来区分 git
.
使用以下设置配置 "pandoc" diff 驱动程序:
[diff "pandoc"] textconv=pandoc --to=markdown prompt = false
将以下内容添加到您的
.gitattributes
文件中:*.docx diff=pandoc
这似乎工作正常,除非在指示将其添加到 git 存储库的意图后尝试区分未跟踪的 Word 文档。有谁知道为什么这在这种情况下不起作用?
这里是重现的步骤,假设上面详述了以下配置。
在 git 存储库中创建 Word 文档
touch my_document.docx
在Microsoft Word中打开文件,在Word文档中添加一些内容(例如,字符"asdf"),并保存
表明您打算添加文档
git add -N my_document.docx
尝试查看差异:
git diff my_document.docx #> couldn't parse docx file #> fatal: unable to read files to diff
在 macOS 上使用 git
版本 2.17.1,我最终遇到 "fatal: unable to read files to diff" 错误。但是,仅将文件添加到索引然后 运行 git diff --cached
会导致以下差异:
diff --git a/my_document.docx b/my_document.docx
new file mode 100644
index 0000000..17f1b0d
--- /dev/null
+++ b/my_document.docx
@@ -0,0 +1 @@
+asdf
为什么 diff 驱动程序不能与 git add -N
一起工作?
这最终是由于 pandoc --to=markdown /dev/null/
正确地 returns 没有错误输出,而 pandoc --to=markdown a/my_document.docx
错误输出只是为了防止 a/my_document.docx
是一个空文件。
所以在你第一次添加my_document.docx
到索引然后运行git diff --cached
比较索引和HEAD的情况下,比较会反/dev/null
,一切都会好起来的。
但是,如果您已表明要添加新文件 my_document.docx
和 git add -N
,则会将同名的空文件添加到索引中。在这种情况下,pandoc
尝试将索引中的空文件转换为 Markdown 时会出错。