65

git diff 引擎将整个文件视为已更改,但实际上它没有更改。例如,采取这个提交:https ://github.com/etiago/phpvirtualbox/commit/626e09958384f479f94011ac3b8301bd497aec51

在这里我们看到文件lib/vboxconnector.php有 2807 个添加和 2778 个删除。此外,通过手动执行 git diff 我发现确实,整个文件被视为删除(用减号标记),而一个全新的文件被视为添加。然而,这些文件有很多共同点,Git 只是忽略了这些。

我查看了diff 返回相同文件的整个文件,但情况似乎并非如此,因为两个提交之间不存在空白更改。

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

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

4

1 回答 1

103

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

vboxconnector.php_2中,每一行都由 just 终止LF

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

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

您还可以在此问题的答案中找到一些有用的信息。

于 2013-10-25T15:39:03.093 回答