解决:git warning: LF will be replaced by CRLF in xxxx
1|0一. git add -A报错
在利用git add -A添加文件时,意外的发现报错了
报错信息中:
-
LF:Line Feed 换行
-
CRLF:Carriage Return Line Feed 回车换行键
大意是:
警告:today.txt(我要添加的文件名)中LF被CRLF替换
在工作区里,这个文件将会保持它原来的换行符
2|0二. 什么原因
2|11. 不同操作系统的行尾结束符(换行符)是不同的
-
windows下:CRLF("\r\n",使用回车换行两个字符)
-
unix下:LF("\n",只使用换行)
-
mac下:CR("\r",只使用回车)
2|22. 使用Git Bash,相当于Linux环境
2|33. 我的文件也是通过touch today.txt和vim today.txt写入的,这种情况下换行符是Linux下的LF
2|44. git工作区默认以CRLF来作为换行符,如果我们的文件中使用LF作为换行符,这时我们继续git add或git commit就会弹出警告,当最终push到远程仓库的时候,git会统一转化,最终以CRLF作为换行符
2|55. 如何理解 "The file will have its original line endings in your working directory."
简单来说,设置 core.autocrlf=true 后,我们工作区的文件都应该用 CRLF 来换行。如果改动文件时引入了 LF,或者设置 core.autocrlf 之前,工作区已经有 LF 换行符。提交改动时,git 会警告你哪些文件不是纯 CRLF 文件,但 git 不会擅自修改工作区的那些文件,而是对暂存区(我们对工作区的改动)进行修改。也因此,当我们进行 git add 的操作时,只要 git 发现改动的内容里有 LF 换行符,就还会出现这个警告
3|0三. 解决方案
3|11. git中如何处理"换行"(line ending)
core.autocrlf是git中负责处理line ending的变量,可以设置三个值:true, false, input,默认是true
-
true:这意味着当你添加文件到git仓库时,git都会视它为文本文件,将其换行符LF转化为CRLF
-
false:当设置成false时,line endings将不做转换操作。文本文件保持原来的样子
-
input:设置为input时,添加文件git仓库时,git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置
4|0 2. 使用 git config --global core.autocrlf false 来解决
4|13. core.autocrlf设置为false的风险
4|2多人协作开发时,如果 windows 上设置 core.autocrlf=false,仓库里也没有配置 .gitattributes,很容易引入 CRLF 或者混合换行符(Mixed Line Endings,一个文件里既有 LF 又有CRLF)到版本库,这样就可能产生各种奇怪的问题
4|3如果有换行符不匹配本地平台的情况,建议用 dos2unix 之类的工具转换下换行符,因为很多配置文件是严格要求文件编码和换行符的,谨慎一点比较好
5|0参考文章
https://www.cnblogs.com/helloHKTK/p/7351946.html
https://blog.csdn.net/wowoniuzailushang/article/details/54317129
https://www.zhihu.com/question/50862500/answer/123197258
__EOF__

本文链接:https://www.cnblogs.com/my_captain/p/9208273.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2017-06-21 《Advanced Bash-scripting Guide》学习(二):测试脚本调用的参数是否正确