背景
在各操作系統(tǒng)下,文本文件所使用的換行符是不一樣的。UNIX/Linux 使用的是 0x0A
(LF),早期的 Mac OS 使用的是0x0D
(CR),后來的 OS X 在更換內(nèi)核后與 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A
(CRLF)作為換行符。Git提供了一個(gè)“換行符自動(dòng)轉(zhuǎn)換”功能。這個(gè)功能默認(rèn)處于“自動(dòng)模式”,當(dāng)你在簽出文件時(shí),它試圖將 UNIX 換行符(LF)替換為 Windows 的換行符(CRLF);當(dāng)你在提交文件時(shí),它又試圖將 CRLF 替換為 LF。Git 的“換行符自動(dòng)轉(zhuǎn)換”功能聽起來似乎很智能、很貼心,因?yàn)樗噲D一方面保持倉(cāng)庫(kù)內(nèi)文件的一致性(UNIX 風(fēng)格),一方面又保證本地文件的兼容性(Windows 風(fēng)格)。但遺憾的是,這個(gè)功能是有 bug 的,而且在短期內(nèi)都不太可能會(huì)修正。
解決
1.Git設(shè)置:
git config --global core.autocrlf false
git config --global core.safecrlf true
【含義】
AutoCRLF
#提交時(shí)轉(zhuǎn)換為L(zhǎng)F,檢出時(shí)轉(zhuǎn)換為CRLF
git config --global core.autocrlf true
#提交時(shí)轉(zhuǎn)換為L(zhǎng)F,檢出時(shí)不轉(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
#提交包含混合換行符的文件時(shí)給出警告
git config --global core.safecrlf warn
2.IDE設(shè)置使用UNIX換行符
【IDEA的設(shè)置】
File -> Settings
Editor -> Code Style
Line separator (for new lines) ,選擇:Unix and OS X (\n)
對(duì)已使用Windows換行符的文件,可以使用Sublime Text打開,
View->Line Endings,選Unix,保存。