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配置
# Windows上:检出时自动将LF转为CRLF,提交时转回LFgit 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://blog-astro-ddd.vercel.app/posts/git-line-endings-fix/相关文章智能推荐
1
Git 历史清理实战:从 99MB 到 4.5MB
技术笔记用 BFG Repo-Cleaner 从 Git 历史中彻底删除大文件和敏感信息,仓库从 99MB 瘦身到 4.5MB 的完整过程。
2
Git Stash:暂存技巧详解
技术笔记Git Stash命令从基础到进阶的完整教程,从临时保存到精细管理,掌握这个被低估的版本控制效率工具。
3
从 Hugo 和 Next.js 回到 Astro 7:一次博客重构复盘
技术笔记记录博客从 Hugo、Next.js 回到 Astro 7 的重构过程,包括框架升级、移动端性能、图片优化、Swup 状态问题和 Vercel 部署。
4
太平山顶:从缆车到维港夜景的完整游览思路
生活太平山顶的交通、观景位置、步行路线和夜景时间安排,适合第一次去香港的游客参考。
5
香港国际机场 T2:航站楼定位、接驳和出行提示
交通香港国际机场 T2 航站楼的定位、与 T1 的关系、交通接驳和出发前需要确认的事项。
随机文章随机推荐


