git diff --word-diff给出了错误的结果

时间:2013-07-09 17:58:10

标签: git diff

以下是两个要比较的文本文件:

的1.txt:

one three four five

2.txt:

one two three four

以下是创建diff(用于Windows)的命令:

git init
copy 1.txt temp
git add temp
copy 2.txt temp
git diff --minimal --word-diff
del temp
xrmdir /s /q ".git"

这是输出:

diff --git a/temp b/temp
index 555f964..d993b66 100644
--- a/temp
+++ b/temp
@@ -1 +1 @@
one {+two+} three four[-five-]

如果我们想通过查看diff看到原始的1.txt,我们会看到

one  three fourfive

(1到3之间的双倍空间,4到5之间没有空格)。

有没有办法(命令,我推测)来解决这个问题,或者这是正常的吗?我错过了什么吗?

P.S。:git --version == 1.8.3.mysysgit.0

1 个答案:

答案 0 :(得分:3)

来自git-diff手册页:

  

     

将单词显示为[-removed-]和{+ added +}。如果它们出现在输入中,则不会尝试转义分隔符,因此输出可能   暧昧

     

     

使用专门用于脚本消费的基于行的特殊格式。添加/删除/未更改的运行以通常的统一差异打印   格式,从行开头的+ / - /字符开始   并延伸到行尾。输入中的换行符是   由波浪线〜代表自己的线。

您得到的结果是按预期工作。 如果分隔符出现在输入中,则不会尝试转义分隔符,因此输出可能不明确。

所以当我运行git diff --minimal --word-diff=porcelain时,我得到了回复:

diff --git a/home/me/temp b/home/me/temp
index 29338da..4d0e08d 100644
--- a/home/me/temp
+++ b/home/me/temp
@@ -1 +1 @@
 one 
+two
  three four
-five
~
保留空白的