Git:warning: CALF wilL be replaced by LF in xxxx 问题解决
warning: CALF wilL be replaced by LF in xxxx 问题解决办法
出现这个问题的原因是像缓存区中提交文件时出现的
原因:
windows中的换行符为 CRLF,而在Linux下的换行符为LF,所以在执行add . 时出现提示
也就是,
工作区的文件都应该用 CRLF 来换行。如果
改动文件时引入了 LF,提交改动时,git 会警告你哪些文件不是纯 CRLF 文件,但 git 不会擅自修改工作区的那些文件,而是对暂存区(我们对工作区的改动)进行修改。也因此,当我们进行 git add 的操作时,只要 git 发现改动的内容里有 LF 换行符,就还会出现这个警告。
git工作区默认为CRLF来作为换行符,所以当我们项目文件里有用的地方使用LF作为换行符,这个时候我们再继续git add 或则git commit的时候就会弹出警告,当最终push到远程仓库的时候git会统一格式全部转化为用CRLF作为换行符
解决方式:
情况一:
Git 可以在你提交时自动地把回车(CR)和换行(LF)转换成换行(LF),而在检出代码时把换行(LF)转换成回车(CR)和换行(LF)。 你可以用git config --global core.autocrlf true
来打开此项功能。 如果是在 Windows 系统上,把它设置成 true,这样在检出代码时,换行会被转换成回车和换行:
1 2 | #提交时转换为LF,检出时转换为CRLF $ git config --global core.autocrlf true |
*适用于Windows系统,且一般为Windows默认设置,会在提交时对换行符进行CRLF - LF的转换,检出时又会进行LF - CRLF的转换。
情况二:
如果使用以换行(LF)作为行结束符的 Linux 或 Mac,你不需要 Git 在检出文件时进行自动的转换。然而当一个以回车(CR)和换行(LF)作为行结束符的文件不小心被引入时,你肯定想让 Git 修正。 所以,你可以把 core.autocrlf 设置成 input 来告诉 Git 在提交时把回车和换行转换成换行,检出时不转换:(这样在 Windows 上的检出文件中会保留回车和换行,而在 Mac 和 Linux 上,以及版本库中会保留换行。)
1 2 | #提交时转换为LF,检出时不转换 $ git config --global core.autocrlf input |
*适用于Linux系统,所有换行符都会进行CRLF - LF转换,但操作时不会转换回CRLF。
情况三:
如果你是 Windows 程序员,且正在开发仅运行在 Windows 上的项目,可以设置 false 取消此功能,把回车保留在版本库中:
1 2 | #提交检出均不转换 $ git config --global core.autocrlf false |
你也可以在文件提交时进行safecrlf检查
1 2 3 4 5 6 7 8 | #拒绝提交包含混合换行符的文件 git config --global core.safecrlf true #允许提交包含混合换行符的文件 git config --global core.safecrlf false #提交包含混合换行符的文件时给出警告 git config --global core.safecrlf warn |
建议:遇到了这种问题可以直接忽略,对我们整体工作不会造成影响!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-05-21 PHP 二维数组去重(保留指定键值的同时去除重复的项)
2019-05-21 laravel框架的注入
2019-05-21 基于Docker的Mysql主从复制