正劲头满满开启一天敲代码的征程,突然遇到了一个奇怪的问题,本地代码提交到git上后本地文件还是被标记成待提交的状态,不知所以然,于是使用git revert强行让本地代码和仓库里保持一致,可是本地文件状态被短暂的更改后又变成了待提交状态。
show diff一个待提交的文件,在webstorm上看到这个提示 Contents have differences only in line separators
,大概猜到是prettier造成的问题,Git上设置的行分隔符和prettier设置的不一致,文件在提交后行分隔符被修改成crlf
,Prettier自动格式化本地代码,其分隔符是lf
,和仓库上的代码分隔符不一致,所以文件被标记成已修改待提交的状态。
分析出原因后,便在.prettierrc.js文件中加了一个配置,设置自动格式化所采用的分割符:
module.exports = {
// 换行符
endOfLine: "crlf",
};
设置完毕重启webstorm后,发现很多文件都报ESLint校验的错 Expected linebreaks to be 'LF' but found 'CRLF'
,ESLint的分隔符校验规则也要配置下,使其与Git仓库保持一致:
rules: {
"linebreak-style": ["off", "windows"],
},
问题解决!