背景
我的同事使用的是mac,我使用的是windows,项目中eslint配置了换行符的规则为 lf。在我的vscode中文件是crlf的,编辑器就会报错
原因分析
git的配置项 core.autocrlf 用于控制换行符问题。这个选项决定了在检出(checkout)和提交(commit)文件时如何处理行结束符。可以设置为三个值:
- true:在windows系统上使用这个值时,会在检出时将LF转换为CRLF,并在提交文件时将CRLF转换为LF。也就是说,git中存储的永远是LF,只是工作区是CRLF
- input:在提交时将CRLF转换为LF,检出时不进行任何转换
- false:git不会自动转换换行符
通过git config --global core.autocrlf可以看到我配置的是 true,所以工作区中的文件是 crlf 的。
问题解决
只需要把我工作区中的文件设置为 LF 的就可以了。可以这样做:
git config --global core.autocrlf input
git rm --cached -r .
git reset --hard
第一个命令配置git,使git在检出文件时不进行任何转换。 第二个命令,用于从暂存区中删除所有文件 第三个命令,使用当前分支的最新commit覆盖工作区和暂存区。 这样做的话可以避免产生新的git修改记录。