- 换行符导致的风格不一致报错问题
Git 由大名鼎鼎的 Linus 开发,最初只可运行于 * nix 系统,因此推荐只将 UNIX 风格的换行符保存入库。但它也考虑到跨平台协作的场景,并且提供了一个“换行符自动转换”功能。这个功能默认处于“自动模式”,当你在签出文件时,它试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);当你在提交文件时,它又试图将 CRLF 替换为 LF。
在git更新文件时,LF的换行符会被更换为CRLF,提交时,将CRLF自动改为LF。
关于CRLF和LF:
- CR:Carriage Return,对应ASCII中转义字符\r,表示回车
- LF:Linefeed,对应ASCII中转义字符\n,表示换行
- CRLF: Carriage Return & Linefeed,\r\n,表示回车并换行
Windows操作系统采用两个字符来进行换行,即CRLF;Unix/Linux/Mac OS X操作系统采用单个字符LF来进行换行;另外,MacIntosh操作系统(即早期的Mac操作系统)采用单个字符CR来进行换行。
在项目中结合eslint后,经常出现Delete CR的报错
eslint编译报错说明当前代码中的换行符是CRLF,但是eslint要求是LF的换行符。
结合自动git提交和拉取自动会修改换行格式,说明:
仓库中的换行符是LF,但是在更新的时候被改为自动CRLF了。
所以需要关闭这个自动转换的功能(有三种方式),让代码风格变得完全自主可控:
命令行方式如下:
git config --global core.autocrlf false
如果你使用其他的UI工具,请看其他两种方式。
修改编译器,webstorm如下:
webstorm设置现在,git更新和提交时不会修改换行,编译器中也是LF的换行。
统一为CRLF是同样的道理。
网友评论