原因在于git的一个配置属性:core.autocrlf
windows下和linux下的文本文件的换行符不一致
- Windows在换行的时候,同时使用了回车符CR(carriage-return character)和换行符LF(linefeed character)
- 而Mac和Linux系统,仅仅使用了换行符LF
- 老版本的Mac系统使用的是回车符CR
因此,文本文件在不同系统下创建和使用时就会出现不兼容的问题
我的项目仓库中默认是Linux环境下提交的代码,文件默认是以LF结尾的(工程化需要,统一标准)。
当我用windows电脑git clone代码的时候,若我的autocrlf(在windows下安装git,该选项默认为true)为true,那么文件每行会被自动转成以CRLF结尾,若对文件不做任何修改,pre-commit执行eslint的时候就会提示你删除CR。
解决办法:
删除clone文件, windows,文件编码是UTF-8且包含中文,最好全局将autocrlf设置为false
添加配置
git config --global core.autocrlf false
再重新拉取
备注:
git core.autocrlf(格式化)
Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf
来打开此项功能, 如果是在Windows系统上,把它设置成true
,这样当签出代码时,LF会被转换成CRLF:
git config --global core.autocrlf true
Linux或Mac系统使用LF作为行结束符,因此你不想Git在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正, 把core.autocrlf
设置成input来告诉Git在提交时把CRLF转换成LF,签出时不转换:
git config --global core.autocrlf input
这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF
如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false
取消此功能,把回车符记录在库中:
git config --global core.autocrlf false
来源:oschina
链接:https://my.oschina.net/huibaifa/blog/3191544