LF跟CRLF换行符问题

MuYan2024-03-16规范规范

简单介绍下 LF 和 CRLF 的区别

  • LF:'\n',Linux 的换行符;
  • CRLF:'\r\n',Windows 的换行符;

从以上的区别就可以看到,此类问题主要出现在多人开发时的跨系统问题。

如果不对该问题进行处理,每次 git commit 提交的时候都会存在换行符变更问题,导致一个文件在只修改几行代码的情况下,变更当前变更文件的全部换行符,导致其他系统开发人员拉取代码时,误以为修改文件全部变更的假象,也增加的解决冲突的烦恼。

  • 为了解决这个问题可以把 Windows 开发人员 的换行符统一成 LF,以下以 vscode 为例

  • 在拉取项目仓库前,先进行以下统一配置

  1. 打开文件 -> 首选项 -> 设置 -> 文件 -> Eol -> 选择 \n,统一新建文件时换行符定义

  2. 配置 .vscode/settings.json 文件跟 .gitignore 文件

// .vscode/settings.json
{
  "files.eol": "\n"
}
  • 取消忽略 .vscode/settings.json 文件
# .gitignore
# Editor directories and files
.vscode/*
!.vscode/settings.json
  1. 关闭 git 的 core.autocrlf 这个配置,该配置默认是 true,即 git pull 时自动将远程代码里的换行符(比如 LF)转换成当前系统的换行符(比如 CRLF)
# 关闭 git 的CRLF自动转换,保留文件原来的换行样式
git config --global core.autocrlf false
  • 查看变更是否生效,为 false 就是生效了
git config --global -l
# 输出结果:core.autocrlf=false
  • 通过以上方法处理后就可以进行愉快的跨系统开发了

  • 已有项目解决方法,一般情况下建议通过以上方法实现

  • 在安装好 prettier 插件后使用以下命令一键自动修改格式,以下命令会导致问题文件变更问题,一般情况下不建议使用
npx prettier --write --end-of-line lf .
上次更新 2026/6/23 11:49:15
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8