2015-09-07 34 views
1

当通过git扩展或使用git diff命令查看暂存或未挂起的更改时,我可以看到git认为整个文件已更改。它会显示整个文件的删除块,然后显示一个附加块(反之亦然),因此很难确切地看到发生了什么变化。为什么git不显示正确的更改,而差异查看器是?

当我查看比如​​winmerge等差异查看器中的更改时,我可以看到确切的更改。怀疑这可能与git中的行结束设置有关,我决定通过选中“Preserve origin EOL chars”选项来更改winmerge中的行结束设置,认为这将模拟我在git中看到的问题。但是,这没有什么区别。不知何故,git可以看到差异查看器无法看到行结束的变化。

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

任何想法?

===额外注====

事实证明,历史上我们没有配置这意味着该设置core.autocrlf使用“假”的默认值库中的行结束符(见https://help.github.com/articles/dealing-with-line-endings/以进一步解释此设置)。添加了一个新的.gitattributes文件,该配置的值为'auto'。作为短期修复,我们注释掉了text属性的设置,所以我们恢复了原来的设置。但是,如果我们采用推荐的“自动”设置,这需要对行结束进行标准化,这可能是最好的。

+0

您可以指定如何让git diff查看更改。请参阅http://git-scm.com/docs/git-diff –

回答

1

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

相关问题