为什么git在差异查看器显示时没有显示正确的变化?

时间:2015-09-07 08:47:01

标签: git

当通过git扩展或使用git diff命令查看暂存或未分阶段的更改时,我可以看到git认为整个文件已更改。它显示整个文件的删除块,后跟添加块(反之亦然),因此很难确切地看到已更改的内容。

当我在像winmerge这样的差异查看器中查看更改时,我可以看到确切的更改。怀疑它可能与git中的行结束设置有关,我决定通过选中' Preserve origin EOL chars'选项来更改winmerge中的行结束设置。认为这会模仿我在git中看到的问题。但是,这没有区别。不知怎的,有一些行结束的变化,git可以看到差异查看器不能。

当我执行git reset时,我遇到了相关的问题 - 硬。 Git sill认为一些文件已经改变并以与上述相同的方式显示它们,但差异查看器认为没有任何改变。令人讨厌的是,执行git reset --hard并没有摆脱文件。

有什么想法吗?

===额外注意====

事实证明,从历史上看,我们没有在存储库中配置行结尾,这意味着设置core.autocrlf使用了默认值' false' (有关此设置的进一步说明,请参阅https://help.github.com/articles/dealing-with-line-endings/)。添加了一个新的.gitattributes文件,此配置的值为' auto'。作为短期修复,我们注释掉了text属性的设置,因此我们恢复了原始设置。但是,如果我们采用推荐的“自动”设置,那么它可能是最好的。这需要对行结尾进行标准化。

1 个答案:

答案 0 :(得分:1)

这几乎可以肯定是由于行结尾不匹配造成的。您可以使用git diff -b来显示差异,同时忽略空格更改,这应该会显示您感兴趣的实质性更改。