Git怎么配置换行符_Git处理CRLF和LF换行符问题【实战】

风强小哥_3693

风强小哥_3693

2026-03-29

734人浏览

原创

绝大多数windows开发者应设core.autocrlf为true,即提交时crlf→lf、检出时lf→crlf,确保本地编辑体验自然且仓库统一用lf;设input会导致检出不还原crlf,易使.bat/.ps1脚本执行失败。

git怎么配置换行符_git处理crlf和lf换行符问题【实战】

Windows用户该设 core.autocrlf 为 true 还是 input?

绝大多数 Windows 开发者应该设成 true,不是 input。设成 input 后,Git 在提交时会把 CRLF 转成 LF,但检出时不转回来——结果是你编辑器里看到的文件全是 LF 换行,和 Windows 默认行为不一致,容易导致批处理(.bat)、PowerShell(.ps1)脚本执行失败,或某些老旧工具报“无法识别的行尾”。

  • git config --global core.autocrlf true:提交时 CRLF→LF,检出时 LF→CRLF,本地体验自然,仓库统一用 LF
  • git config --global core.autocrlf input:只做单向转换,适合 WSL 或纯 Linux 工具链用户,普通 Windows 用户慎用
  • 如果团队里有人用 macOS/Linux,别指望靠个人设置解决全部问题——必须配合 .gitattributes

为什么改了 core.autocrlf 还有换行符警告?

因为 Git 已经把旧文件按老规则缓存进暂存区(index)了。新配置只影响后续操作,不会自动重写已缓存的换行符状态。你看到的警告其实是 Git 在提醒:“这个文件工作区是 CRLF,但暂存区存的是 LF,我要帮你转,但先打个招呼”。

  • 运行 git rm --cached -r . && git reset --hard 强制刷新全部文件的暂存状态(⚠️会丢弃未提交的本地修改)
  • 只想修某个文件?用 git checkout -- <file></file> 从暂存区重载,再 git add <file></file>
  • 警告里提到的 core.safecrlf 默认为 true,它会在检测到换行符不一致时直接拒绝 add;设成 false 可绕过检查,但只是掩盖问题

如何让 Git 完全不管某个文件的换行符?

用 .gitattributes 把它标记为 binary。Git 对 binary 文件不做任何文本处理,包括换行符转换、diff 比较、合并逻辑——这才是真正“不碰”的方式。

Github Auto
Github Auto

管PR、盯Issue、跑CI、发Release——GitHub仓库日常运维扔给它。少开几个Chrome标签页。

下载
  • 在项目根目录新建 .gitattributes,加一行:*.inf binary(假设你要保护 .inf 文件)
  • 不要写 *.inf text 或留空,那反而会触发默认的 auto 推断,可能误判为文本
  • 已提交过的 .inf 文件需先清除缓存:git rm --cached *.inf && git add *.inf,否则规则不生效
  • 注意:binary 是别名,等价于 -text -diff -merge,它比单纯关掉 autocrlf 更彻底、更安全

.gitattributes 里 eol=lf 和 text=auto 有什么区别?

text=auto 是 Git 的自动探测机制:它读取文件内容判断是否像文本,再决定是否换行符归一化;而 eol=lf 是强制指令,只要匹配上,无论内容是什么,都按 LF 存储并检出(Windows 下检出会转成 CRLF,除非 core.autocrlf 是 false)。

  • 推荐组合:* text=auto eol=lf —— 大部分文本文件走自动识别 + 统一 LF 存储
  • 对必须保留 CRLF 的文件(如 .bat),单独写:*.bat text eol=crlf
  • 别写 * eol=lf(没 text=auto),Git 会把二进制文件也当文本处理,可能损坏图片、压缩包等
  • 规则顺序重要:.gitattributes 从上到下匹配,靠后的规则可覆盖前面的

Git 的换行符问题从来不是“配对就完事”,关键在于配置、规则、缓存三者同步。最容易被忽略的是:改完 core.autocrlf 后不清理暂存区,或者写了 .gitattributes 却忘了 git rm --cached 刷新——这两步漏掉,90% 的警告和冲突都会照常出现。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

git

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.24

794

4

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

2023.07.05

6059

9

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

1780

6

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

2023.07.24

1034

5

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

3937

7

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

3661

6

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

3179

3

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.27

2758

6

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

2023.08.01

1488

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 8万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.9万人学习