如何通过Git autocrlf配置解决跨平台换行符不一致问题?

2026-05-07 16:510阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1026个文字,预计阅读时间需要5分钟。

如何通过Git autocrlf配置解决跨平台换行符不一致问题?

在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.shMakefile 被悄悄转成 CRLF,Linux 服务器执行时会直接报错

core.autocrlf 该设 true 还是 input

别看团队、别看服务器,只看你本地操作系统。

阅读全文
标签:Git

本文共计1026个文字,预计阅读时间需要5分钟。

如何通过Git autocrlf配置解决跨平台换行符不一致问题?

在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.shMakefile 被悄悄转成 CRLF,Linux 服务器执行时会直接报错

core.autocrlf 该设 true 还是 input

别看团队、别看服务器,只看你本地操作系统。

阅读全文
标签:Git