[git] warning: LF will be replaced by CRLF | fatal

遇到這兩個錯誤, 基本上都是叫你將 autocrlf 設置爲 false. 可是我以爲這樣很不妥。git


若是你的源文件中是換行符是LF,而autocrlf=true, 此時git add就會遇到 fatal: LF would be replaced by CRLF 的錯誤。有兩個解決辦法:程序員

1. 將你的源文件中的LF轉爲CRLF便可【推薦】編程

2. 將autocrlf 設置爲 falsespa


若是你的源文件中是換行符是CRLF,而autocrlf=input,  此時git add也會遇到 fatal: CRLF would be replaced by LF 的錯誤。有兩個解決辦法:code

1. 將你源文件中的CRLF轉爲LF【推薦】orm

2. 將autocrlf 設置爲true 或者 false開發


個人建議:在Mac上設置 autocrlf = input, 在Windows上設置autocrlf = true(默認值)。input

----------------------------------------------------------------------------------------------------------------------------------it

這樣的話,程序

Windows:(true)

提交時,將CRLF 轉成 LF再提交;

切出時,自動將LF 轉爲 CRLF;


MAC/Linux: (input)

提交時,   將CRLF 轉成 LF再提交;

切出時,保持LF便可


這樣便可保證倉庫中永遠都是LF. 並且在Windows工做空間都是CRLF, 在Mac/Linux工做空間都是LF.

----------------------------------------------------------------------------------------------------------------------------------


core.autocrlf

假如你正在Windows上寫程序,又或者你正在和其餘人合做,他們在Windows上編程,而你卻在其餘系統上,在這些狀況下,你可能會遇到行尾結束符問題。這是由於Windows使用回車和換行兩個字符來結束一行,而Mac和Linux只使用換行一個字符。雖然這是小問題,但它會極大地擾亂跨平臺協做。

Git能夠在你提交時自動地把行結束符CRLF轉換成LF,而在簽出代碼時把LF轉換成CRLF。用core.autocrlf來打開此項功能,若是是在Windows系統上,把它設置成true,這樣當簽出代碼時,LF會被轉換成CRLF:

$ git config --global core.autocrlf true

Linux或Mac系統使用LF做爲行結束符,所以你不想 Git 在簽出文件時進行自動的轉換;當一個以CRLF爲行結束符的文件不當心被引入時你確定想進行修正,把core.autocrlf設置成input來告訴 Git 在提交時把CRLF轉換成LF,簽出時不轉換:

$ git config --global core.autocrlf input

這樣會在Windows系統上的簽出文件中保留CRLF,會在Mac和Linux系統上,包括倉庫中保留LF。

若是你是Windows程序員,且正在開發僅運行在Windows上的項目,能夠設置false取消此功能,把回車符記錄在庫中:

$ git config --global core.autocrlf false
相關文章
相關標籤/搜索