Delete `␍`eslint(prettier/prettier) 错误的解决方案

不打扰是莪最后的温柔 提交于 2020-03-11 11:02:11

原因在于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

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!