背景
在各操作系統(tǒng)下夺颤,文本文件所使用的換行符是不一樣的栓袖。UNIX/Linux 使用的是 0x0A(LF)哼蛆,早期的 Mac OS 使用的是0x0D(CR)钞脂,后來的 OS X 在更換內(nèi)核后與 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作為換行符棘脐。Git提供了一個“換行符自動轉(zhuǎn)換”功能斜筐。這個功能默認處于“自動模式”,當你在簽出文件時蛀缝,它試圖將 UNIX 換行符(LF)替換為 Windows 的換行符(CRLF)顷链;當你在提交文件時,它又試圖將 CRLF 替換為 LF屈梁。Git 的“換行符自動轉(zhuǎn)換”功能聽起來似乎很智能嗤练、很貼心,因為它試圖一方面保持倉庫內(nèi)文件的一致性(UNIX 風格)在讶,一方面又保證本地文件的兼容性(Windows 風格)煞抬。但遺憾的是,這個功能是有 bug 的构哺,而且在短期內(nèi)都不太可能會修正革答。
解決方案
- Git設(shè)置
git config --global core.autocrlf false
git config --global core.safecrlf true
含義
AutoCRLF
// 提交時轉(zhuǎn)換為LF,檢出時轉(zhuǎn)換為CRLF
git config --global core.autocrlf true
// 提交時轉(zhuǎn)換為LF曙强,檢出時不轉(zhuǎn)換
git config --global core.autocrlf input
// 提交檢出均不轉(zhuǎn)換
git config --global core.autocrlf false
SafeCRLF
// 拒絕提交包含混合換行符的文件
git config --global core.safecrlf true
// 允許提交包含混合換行符的文件
git config --global core.safecrlf false
// 提交包含混合換行符的文件時給出警告
git config --global core.safecrlf warn
- IDE設(shè)置使用UNIX換行符
IDEA的設(shè)置File -> Settings -> Editor -> Code Style
Line separator (for new lines) 残拐,選擇:Unix and OS X (\n)
對已使用Windows換行符的文件,可以使用Sublime Text打開碟嘴,
View->Line Endings溪食,選Unix,保存娜扇;