欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

规范项目中换行符的处理(CRLF 和 LF)

最编程 2024-06-19 11:00:32
...

CRLF,LF,换行符,用来表示文本换行的方式。

CR(Carriage Return)代表回车,对应\r

LF(Line Feed)代表换行,对应字符\n

window系统使用CRLF(\r\n)作为换行符,Unix系统(Linux,MacOS)使用LF。

window系统上有些编辑器还常常偷偷地把换行符改成CRLF。最终导致明明没有修改代码,但却整个文件都不同了。

Git的换行符处理

core.autocrlf

通过core.autocrlf可以更改git处理换行符的方式。

core.autocrlf有三个值:

  1. 当设置为true时,git提交代码时会自动将CRLF转换为LF,在检出代码时会将LF转换成CRLF。一般在windows上使用该功能。
git config --global core.autocrlf true
  1. 在Linux或MacOS上时,使用LF作为换行符,检出代码时不需要转换。但是当代码中已有一个CRLF换行符时,在提交时就需要将其转换成LF。因此input的功能是在提交代码时,将CRLF转换成LF;检出代码时不转换
git config --global core.autocrlf input
  1. 当设置成false时,表示不做任何转换。因此可以把CRLF提交到版本库中。
git config --global core.autocrlf false

综上,如果是跨平台开发和运行,core.autocrlf应在windows上设置为true,在Linux和MacOS上设置为input;如果仅在windows上开发和运行的项目,可以设置为false

core.safecrlf

一样有三个值:

# 不允许提交包含混合换行符的文件
git config --global core.safecrlf true

# 允许提交包含混合换行符的文件
git config --global core.safecrlf false

# 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

core.eol

core.autocrlffalse时可以设置文本文件的换行符类型。有三个值crlflfnative,默认是native,表示平台默认的换行符。

.gitattribute

通过.gitattribute文件配置仓库的git是更好的方式。

常用的配置:

* text=auto eol=lf

*匹配所有文件,text=auto表示由git自己识别是否是文本文件(因为二进制文件,如图片,不需要转换换行符),eol=lf将换行符设置为LF。

使用了.gitattribute则不需要设置core.autocrlfcore.eol

如果不小心将CRLF换行符提交到仓库,则可以通过以下命令修复,然后重新提交。

git add --renormalize .

VSCode

VSCode中设置文件的换行符类型。

  1. 打开文件的右下角可以设置
  2. File -> Preferences -> Settings -> Files:Eol

ESLint

ESLint中也可以增加换行符校验。 unix表示LF,windows表示CRLF。

module.exports = {
    // ...
    rules: {
        // ...
        'linebreak-style': ['error', 'unix']
    }
}

参考

  • git-scm.com/docs/git-co…
  • git-scm.com/docs/gitatt…
  • docs.github.com/en/github/u…
  • cn.eslint.org/docs/rules/…

推荐阅读