Eclipse EGit CLRF未修改的文件在Linux 64位中标记为已修改



我在64位Linux的Eclipse Juno中使用EGit,它显示了许多修改过的文件,尽管它们没有。这可能是因为我过去曾使用Windows签出过此存储库。在无休止地摆弄core.autocrlf和工作区设置之后,我陷入了困境。

如何使EGit正确地将文件标记为未修改?

这是由这里讨论的一个相当复杂的问题引起的:http://www.mail-archive.com/git@vger.kernel.org/msg09439.html

简短的解释是,存储库中最初以二进制(带CR)形式存储的文件现在被处理为文本,因此对这些文件(不带CR)进行git校验和,它们"看起来"被修改了,因为校验和不匹配。

不幸的是,git不知道文件是以文本模式还是二进制模式存储在存储库中(它不在git文件格式规范中),所以这个问题无法有效解决。人们的期望是,人们应该通过将这些文件重新提交为文本来"修复"他们的存储库,因为它们本来就不应该存储为二进制文件。

如果您不需要git来转换这些文件的行尾,另一种解决问题的方法是设置Linux存储库,将这些文件视为二进制文件(例如,在".gitattributes"文件中添加一行"二进制")。

最新更新