我使用EGit和Eclipse Juno進行64位Linux操作,它顯示了許多文件被修改,即使它們不是。這可能是因爲我過去使用Windows檢出了這個存儲庫。在無休止地擺弄core.autocrlf和工作區設置後,我卡住了。Eclipse EGit CLRF未修改的文件在Linux 64位標記爲已修改
如何讓EGit將文件正確標記爲未修改?
我使用EGit和Eclipse Juno進行64位Linux操作,它顯示了許多文件被修改,即使它們不是。這可能是因爲我過去使用Windows檢出了這個存儲庫。在無休止地擺弄core.autocrlf和工作區設置後,我卡住了。Eclipse EGit CLRF未修改的文件在Linux 64位標記爲已修改
如何讓EGit將文件正確標記爲未修改?
這是一個相當複雜的問題,已經在這裏討論引起:http://www.mail-archive.com/[email protected]/msg09439.html
簡短的解釋是,文件最初存儲爲二進制(與CRS)在倉庫中目前正在處理的文本,所以git的校驗這些文件(沒有CR),並且他們「看起來」被修改,因爲校驗和不匹配。
不幸的是,git並不知道文件是以文本還是二進制模式存儲在存儲庫中(它不在git文件格式規範中),因此無法有效地修復此問題。期望的是人們應該通過將這些文件重新提交爲文本來「修復」它們的存儲庫,因爲它們本來不應該作爲二進制文件存儲在第一位。
解決這個問題的另一種方法是,如果你不需要git來轉換這些文件的行結尾,那就是設置你的Linux存儲庫,把這些文件當作二進制文件來處理(比如添加一個「二進制」行到你的「.gitattributes」文件)。