当它不是时,git diff将整个文件视为已更改

时间:2013-10-25 15:29:24

标签: git git-diff

git diff引擎在没有时将整个文件视为已更改。例如,采取此提交:https://github.com/etiago/phpvirtualbox/commit/626e09958384f479f94011ac3b8301bd497aec51

在这里,我们看到文件 lib / vboxconnector.php 有2807个添加和2778个删除。另外,从手动git diff我发现确实,整个文件被删除(标记为减号),并且整个新文件被视为添加。但是,这些文件有很多共同点,Git完全忽略了这些文件。

我看过diff returning entire file for identical files但似乎并非如此,因为两次提交之间不存在空格更改。

此外,采用文件的两个提交(626e09958384f479f94011ac3b8301bd497aec51626e09958384f479f94011ac3b8301bd497aec51^1中的一个)并使用Meld对它们进行差异化,我得到了正确的差异分析。

为方便起见,我已将文件的两次提交上传到我的Dropbox:commit_1 commit_2

1 个答案:

答案 0 :(得分:59)

vboxconnector.php_1中,每一行都以CR LF序列终止。

vboxconnector.php_2中,每一行仅以LF终止。

因此文件的每一行都发生了变化。

尝试使用git diff --ignore-space-at-eol

您还可以在the answers to this question中找到一些有用的信息。