git diff引擎在没有时将整个文件视为已更改。例如,采取此提交:https://github.com/etiago/phpvirtualbox/commit/626e09958384f479f94011ac3b8301bd497aec51
在这里,我们看到文件 lib / vboxconnector.php 有2807个添加和2778个删除。另外,从手动git diff我发现确实,整个文件被删除(标记为减号),并且整个新文件被视为添加。但是,这些文件有很多共同点,Git完全忽略了这些文件。
我看过diff returning entire file for identical files但似乎并非如此,因为两次提交之间不存在空格更改。
此外,采用文件的两个提交(626e09958384f479f94011ac3b8301bd497aec51
和626e09958384f479f94011ac3b8301bd497aec51^1
中的一个)并使用Meld对它们进行差异化,我得到了正确的差异分析。
答案 0 :(得分:59)
在vboxconnector.php_1
中,每一行都以CR
LF
序列终止。
在vboxconnector.php_2
中,每一行仅以LF
终止。
因此文件的每一行都发生了变化。
尝试使用git diff --ignore-space-at-eol
。
您还可以在the answers to this question中找到一些有用的信息。