- 換行符導(dǎo)致的風(fēng)格不一致報錯問題
Git 由大名鼎鼎的 Linus 開發(fā),最初只可運行于 * nix 系統(tǒng),因此推薦只將 UNIX 風(fēng)格的換行符保存入庫。但它也考慮到跨平臺協(xié)作的場景,并且提供了一個“換行符自動轉(zhuǎn)換”功能。這個功能默認(rèn)處于“自動模式”,當(dāng)你在簽出文件時,它試圖將 UNIX 換行符(LF)替換為 Windows 的換行符(CRLF);當(dāng)你在提交文件時,它又試圖將 CRLF 替換為 LF。
在git更新文件時,LF的換行符會被更換為CRLF,提交時,將CRLF自動改為LF。
關(guān)于CRLF和LF:
- CR:Carriage Return,對應(yīng)ASCII中轉(zhuǎn)義字符\r,表示回車
- LF:Linefeed,對應(yīng)ASCII中轉(zhuǎn)義字符\n,表示換行
- CRLF: Carriage Return & Linefeed,\r\n,表示回車并換行
Windows操作系統(tǒng)采用兩個字符來進(jìn)行換行,即CRLF;Unix/Linux/Mac OS X操作系統(tǒng)采用單個字符LF來進(jìn)行換行;另外,MacIntosh操作系統(tǒng)(即早期的Mac操作系統(tǒng))采用單個字符CR來進(jìn)行換行。
在項目中結(jié)合eslint后,經(jīng)常出現(xiàn)Delete CR的報錯

eslint編譯報錯
說明當(dāng)前代碼中的換行符是CRLF,但是eslint要求是LF的換行符。
結(jié)合自動git提交和拉取自動會修改換行格式,說明:
倉庫中的換行符是LF,但是在更新的時候被改為自動CRLF了。
所以需要關(guān)閉這個自動轉(zhuǎn)換的功能(有三種方式),讓代碼風(fēng)格變得完全自主可控:
命令行方式如下:
git config --global core.autocrlf false
如果你使用其他的UI工具,請看其他兩種方式。
修改編譯器,webstorm如下:

webstorm設(shè)置
現(xiàn)在,git更新和提交時不會修改換行,編譯器中也是LF的換行。
統(tǒng)一為CRLF是同樣的道理。