如何通过Git autocrlf配置解决跨平台换行符不一致问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1026个文字,预计阅读时间需要5分钟。
在Windows系统中,用户必须设置`core.autocrlf`为`true`,在macOS/Linux系统中,用户必须设置为`input`。设置错误或留空会导致`git add`重复警告、`git diff`显示文件变更、CI构建失败,甚至脚本执行出错(如`/bin/bash: bad interpreter`)。
为什么 git add 总提示 “CRLF will be replaced by LF”
这不是 Git 在报错,而是在告诉你:你工作区的文件用了 CRLF(比如 VS Code 或记事本保存的),但 Git 暂存区里存的是 LF —— 它正准备帮你转,先打个招呼。
- 根本原因是 Git 已把旧文件按老规则缓存进 index(暂存区)了,新配置只影响后续操作,不会自动重写已有缓存
- 常见诱因:刚克隆别人在 Windows 下长期开发的老项目,对方没配
.gitattributes;或你在 macOS 上粘贴了 Windows 复制的代码,编辑器自动存成 CRLF - 后果不只是警告:如果
deploy.sh或Makefile被悄悄转成 CRLF,Linux 服务器执行时会直接报错
core.autocrlf 该设 true 还是 input
别看团队、别看服务器,只看你本地操作系统。
本文共计1026个文字,预计阅读时间需要5分钟。
在Windows系统中,用户必须设置`core.autocrlf`为`true`,在macOS/Linux系统中,用户必须设置为`input`。设置错误或留空会导致`git add`重复警告、`git diff`显示文件变更、CI构建失败,甚至脚本执行出错(如`/bin/bash: bad interpreter`)。
为什么 git add 总提示 “CRLF will be replaced by LF”
这不是 Git 在报错,而是在告诉你:你工作区的文件用了 CRLF(比如 VS Code 或记事本保存的),但 Git 暂存区里存的是 LF —— 它正准备帮你转,先打个招呼。
- 根本原因是 Git 已把旧文件按老规则缓存进 index(暂存区)了,新配置只影响后续操作,不会自动重写已有缓存
- 常见诱因:刚克隆别人在 Windows 下长期开发的老项目,对方没配
.gitattributes;或你在 macOS 上粘贴了 Windows 复制的代码,编辑器自动存成 CRLF - 后果不只是警告:如果
deploy.sh或Makefile被悄悄转成 CRLF,Linux 服务器执行时会直接报错
core.autocrlf 该设 true 还是 input
别看团队、别看服务器,只看你本地操作系统。

