文档
Git
CRLF 和 LF 冲突

CRLF 和 LF 冲突

CRLF 其中 CR (Carriage Return) 代表回车, LF (Line Feed) 代表换行,一般 Windows 操作系统使用 CRLF 作为默认的文件换行模式,macOS 或 Linux 使用 LF 作为默认的文件换行模式。为了保持一致性,一般我们使用 LF 作为远程存储库的文件换行模式

造成冲突的原因:使用 Windows 系统的电脑克隆远程存储库时,会自动将文件的换行模式转换为 CRLF。

VS Code 改变默认换行标准

在 VS Code 用户设置的 JSON 文件中添加如下设置,可以将默认的换行模式调整为 LF。

settings.json
{
  "files.eol": "\n"
}

同理,如果要将换行模式调整为 CRLF。

settings.json
{
  "files.eol": "\r\n"
}

配置 Git core.autocrlf

提交时转化为 LF,拉取时转换为 CRLF。

Bash
git config --global core.autocrlf true

提交与拉取时均不转换(Linux 与 macOS 操作系统建议使用该配置)。

Bash
git config --global core.autocrlf false

提交时转化为 LF,拉取时不转换(Windows 操作系统建议使用该配置)。

Bash
git config --global core.autocrlf input

配置 Git core.safecrlf

禁止提交混合换行符的文本文件(git add 的时候会被拦截,提示异常)。

Bash
git config --global core.safecrlf true

默认配置,不禁止提交混合换行符的文本文件。

Bash
git config --global core.safecrlf false

提交混合换行符的文本文件的时候会发出警告,但是不会阻止 git add 操作。

Bash
git config --global core.safecrlf warn

配置 .gitattributes

以上 core.autocrlfcore.safecrlf 都是在本地的个性化设置。对于多人协作的大项目,建议在项目根目录添加一个 .gitattributes 文件,其优先级高于本地的 Git 配置。

Last updated on January 10, 2023