git diff 将整个文件视为已更改,但未更改

标签 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 .

最佳答案

vboxconnector.php_1 中,每一行都以 CR LF 序列结束。

vboxconnector.php_2 中,每一行都以 LF 结束。

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

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

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

关于git diff 将整个文件视为已更改,但未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19593909/

相关文章:

git - merge 但覆盖 Git 中的更改

git:自动特定行修复

git - 是否可以用 git 区分 PowerPoint 版本控制?

git - 我可以让我的 Git 'difftool' 默认应用 '--dir-diff' 吗?

git - 为什么我想做 git rebase?

Github 多个帐户-personalUserName/repoName.git 的权限被拒绝给 globalUserName

git - 正确推送 git 子模块

git - 当您在 merge 提交上输入 `git show` 时,差异意味着什么?

git - 在提交之间使用 git-diff 忽略 *所有* 空白更改

git - "git diff"、 "git diff HEAD"和 "git diff --staged"的奇怪输出?