大家好,我是小饼鹅,让我们一起学习吧
背景
如果我们正在应用的windows系统进行开发工作的话,我们很有可能在对代码进行git add 的时候会看到以下warning: LF will be replaced by CRLF the next time Git touched it
很多人可能并不会特别在意,因为它貌似并没有对我们产生什么影响,可是真的是么?
LF和CRLF
在之前用mac当做开发主力的时候,我并没有对此有过什么了解。所以首先,这两个东西是什么?
当我们进行代码开发的时候,每一行都有它的末尾,在系统里,都会给他们加上一个行尾的标识。所以我们可以说,LF和CRLF这些就是被认为是不同的行尾字符。
那具体他们是如何表现的呢
LF
全名Carriage Returns ,主要用在unix系统,他将光标向下移动到新行,而不返回到该行的开头,字符表现是 \n
CRLF
全名 Carriage Return and Line Feed , 主要用在 windows和其他非unix的系统,它将光标移动到新行和同一行的开头。字符表现是\r\n
可能会有的问题
正如我们开头看到的警告,CRLF 和 LF之间会进行替换,但是实际上对我们的代码并没有什么影响
目前仅仅对我来说的话,这个问题给我最大的影响是,假如我们需要拉取一个测试环境的代码在本地解决冲突,你会发现我们的工作区更改中,会有上千个文件被更改了,而实际上,我们并没有对代码进行更改,只是LF和CRLF之间的变动而已。
所以结果是,当我们commit的时候,我们需要去commit几千个文件的改动,你如果说你的电脑配置十分强劲的话那还好,不然首先内存和时间都会让你感觉很烦
怎么解决
那如果我们想解决这个问题 我们如何去解决呢?有下边几种方法,都以我用的vscode编辑器为例
1
当我们打开文件的时候,我们看向右下角
这里点击LF就可以在顶部打开切换的位置
但这个方法只能改动当前文件的,所以不是很推荐
2
另外的方法是打开vacode的配置
然后在我们的json之中加入这条配置
"files.eol": "\n"
它的作用就是更改行尾标识,至于为什么是 \n 可以看一下上边LF和CRLF的讲解哦
3
以上的配置可以解决大多数情况
但如果还是不行的话,可以执行一下这个,他的作用就是防止如果autocrlf什么时候被设置成了true
git config --global core.autocrlf false
4
还有一个针对一个项目级的方法
声明一个.gitattributes 文件 如果不知道这个文件的意义可以去了解一下~
然后加入此行
* text eol=lf
结尾
有了这么多方法 我们就再也不用担心,看到类似的问题不会解决了~ 另外打个小广告
我还有一个想法文章来源:https://www.toymoban.com/news/detail-483458.html
最近看了张鑫旭大佬关于写作的小册,比较有触动。之前虽然也会去更新一些文章,但是动力不足完全随缘更新,也没有对此有过什么计划,所以有没有同学有兴趣一起保持周更文章,互相督促和讨论技术呢? 希望会是一个小群,每个人都能有着比较好的体验,如果感兴趣的话请留言或加v:17643537768文章来源地址https://www.toymoban.com/news/detail-483458.html
到了这里,关于让你搞懂怎么解决LF、CRLF问题LF will be replaced by CRLF the next time Git touched it的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!