当通过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属性的设置,所以我们恢复了原来的设置。但是,如果我们采用推荐的“自动”设置,这需要对行结束进行标准化,这可能是最好的。
您可以指定如何让git diff查看更改。请参阅http://git-scm.com/docs/git-diff –