2011-02-14 58 views
2

在提交期間,我意外地將我的CRLF替換爲LF行尾。 文件歷史記錄現在這個樣子:修復行在git中喂入問題

+---------+-----------+ 
| Version | Line Feed | 
+---------+-----------+ 
| 4 | CRLF  | 
| 3 | CRLF  | << changed all LFs back to CRLFs 
| 2 | LF  | << mistake introduced here 
| 1 | CRLF  | 
+---------+-----------+ 

的問題是,這個文件現在確定爲一個二進制文件(即使我已經手動校正在3版本的問題)。這導致diff,blame和其他工具在此文本文件上按預期停止工作。

我嘗試設置*.xml crlf diff./git/info/attributes但它只適用於diff而不是blame,也懷疑我可能會遇到合併衝突的問題。提交此文件時,它也會給我LF will be replaced by CRLF警告,表明屬性設置不足。

這是在設置爲autocrlf = true的Windows操作系統上。


如何讓git再次將其識別爲文本文件?

回答

4

'crlf'屬性已被棄用。它已被'text'和'eol'屬性取代,但你很可能不需要使用'eol'屬性。

Git從來沒有打算在內部存儲CRLF行尾,所以這可能需要歷史重寫才能完全修復。改變行結束的提交將是最早提交的責任將會看到的提交,因爲它認爲整個文件被重寫(它是)。

嘗試並防止再次發生的一種方法是將* text=auto添加到.gitattributes並將該文件提交到回購站。

有關詳細信息,請參閱gitattributes man page

+0

感謝您的反饋,這有助於。 – 2011-02-16 15:45:23