Git跨平台换行符:自动转换配置(LF/CRLF)

433 字
2 分钟
Git跨平台换行符:自动转换配置(LF/CRLF)

一行代码没改,diff却爆满屏#

Windows队友提交了一堆文件,在Mac和Linux上看diff——整个文件全是红的,每一行末尾都被标记了变化。项目本身没改任何逻辑,但换行符从LF变成了CRLF或者倒过来。Git自动把换行符转换了一遍,远端和本地的换行策略不一致,合并冲突和CI构建的自检环节持续报错。这是跨平台协作开发的经典噩梦。

LF和CRLF的区别#

历史原因:电传打字机回车将打印头归位到行首,换行将纸卷推进一行,两个分开的控制码CR(\r)和LF(\n)被一起用于Windows系统的行尾标识。Unix和现代macOS只用LF(\n)。同一个文件在不同操作系统中保存时会被编辑器自动插入自己默认的换行符号。

Git的autocrlf配置#

Terminal window
# Windows上:检出时自动将LF转为CRLF,提交时转回LF
git config --global core.autocrlf true
# Mac/Linux上:提交时将CRLF转为LF,检出时不转换
git config --global core.autocrlf input

推荐策略:团队统一在服务端强制LF,所有成员在自己的环境做提交时转为LF,从远端层面彻底消除CRLF。

.gitattributes团队维度的精确控制#

在仓库根目录创建.gitattributes精确指定哪些文件类型做什么换行处理,该配置优先级高于autocrlf,是团队统一执行的最优方式。

核心原则:远端一律LF,所有平台提交时转为LF,远端设置禁止CRLF进入仓库。统一执行后,多平台协作的换行符地狱问题从根本上被切除。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Git跨平台换行符:自动转换配置(LF/CRLF)
https://yfd5224.github.io/posts/git-line-endings-fix/
作者
ddd
发布于
2025-11-28
许可协议
CC BY-NC-SA 4.0
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
站点统计
文章
270
分类
5
标签
960
总字数
210,898
运行时长
0
最后活动
0 天前

目录