遇到這兩個(gè)錯(cuò)誤,是因?yàn)镚it的換行符檢查功能。core.safecrlfGit提供了一個(gè)換行符檢查功能(core.safecrlf),可以在提交時(shí)檢查文件是否混用了不同風(fēng)格的換行符。這個(gè)功能的選項(xiàng)如下:
false - 不做任何檢查
warn - 在提交時(shí)檢查并警告
true - 在提交時(shí)檢查,如果發(fā)現(xiàn)混用則拒絕提交
建議使用最嚴(yán)格的 true 選項(xiàng)。
core.autocrlf假如你正在Windows上寫(xiě)程序,又或者你正在和其他人合作,他們?cè)赪indows上編程,而你卻在其他系統(tǒng)上,在這些情況下,你可能會(huì)遇到行尾結(jié)束符問(wèn)題。這是因?yàn)閃indows使用回車和換行兩個(gè)字符來(lái)結(jié)束一行,而Mac和Linux只使用換行一個(gè)字符。雖然這是小問(wèn)題,但它會(huì)極大地?cái)_亂跨平臺(tái)協(xié)作。
Git可以在你提交時(shí)自動(dòng)地把行結(jié)束符CRLF轉(zhuǎn)換成LF,而在簽出代碼時(shí)把LF轉(zhuǎn)換成CRLF。用core.autocrlf來(lái)打開(kāi)此項(xiàng)功能,如果是在Windows系統(tǒng)上,把它設(shè)置成true,這樣當(dāng)簽出代碼時(shí),LF會(huì)被轉(zhuǎn)換成CRLF:
$ git config --global core.autocrlf true
Linux或Mac系統(tǒng)使用LF作為行結(jié)束符,因此你不想 Git 在簽出文件時(shí)進(jìn)行自動(dòng)的轉(zhuǎn)換;當(dāng)一個(gè)以CRLF為行結(jié)束符的文件不小心被引入時(shí)你肯定想進(jìn)行修正,把core.autocrlf設(shè)置成input來(lái)告訴 Git 在提交時(shí)把CRLF轉(zhuǎn)換成LF,簽出時(shí)不轉(zhuǎn)換:
$ git config --global core.autocrlf input
這樣會(huì)在Windows系統(tǒng)上的簽出文件中保留CRLF,會(huì)在Mac和Linux系統(tǒng)上,包括倉(cāng)庫(kù)中保留LF。
如果你是Windows程序員,且正在開(kāi)發(fā)僅運(yùn)行在Windows上的項(xiàng)目,可以設(shè)置false取消此功能,把回車符記錄在庫(kù)中:
$ git config --global core.autocrlf false