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

Tia*_*nha 45 git git-diff

git diff引擎看到整个文件没有改变.例如,采取此提交:https://github.com/etiago/phpvirtualbox/commit/626e09958384f479f94011ac3b8301bd497aec51

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

我看过diff返回整个文件的相同文件,但似乎并非如此,因为两次提交之间不存在空格更改.

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

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

rob*_*off 72

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

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

因此,文件的每一行都已更改.

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

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

  • 去repo并执行这个命令git config --global core.autocrlf true (4认同)