likes
comments
collection
share

让你搞懂怎么解决LF、CRLF问题LF will be replaced by CRLF the next time Git touched it

作者站长头像
站长
· 阅读数 11

大家好,我是小饼鹅,让我们一起学习吧

让你搞懂怎么解决LF、CRLF问题LF will be replaced by CRLF the next time Git touched it

背景

如果我们正在应用的windows系统进行开发工作的话,我们很有可能在对代码进行git add 的时候会看到以下warning: LF will be replaced by CRLF the next time Git touched it

让你搞懂怎么解决LF、CRLF问题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、CRLF问题LF will be replaced by CRLF the next time Git touched it

这里点击LF就可以在顶部打开切换的位置

让你搞懂怎么解决LF、CRLF问题LF will be replaced by CRLF the next time Git touched it

但这个方法只能改动当前文件的,所以不是很推荐

2

另外的方法是打开vacode的配置

让你搞懂怎么解决LF、CRLF问题LF will be replaced by CRLF the next time Git touched it

然后在我们的json之中加入这条配置

"files.eol": "\n"

它的作用就是更改行尾标识,至于为什么是 \n 可以看一下上边LF和CRLF的讲解哦

3

以上的配置可以解决大多数情况

但如果还是不行的话,可以执行一下这个,他的作用就是防止如果autocrlf什么时候被设置成了true

git config --global core.autocrlf false

4

还有一个针对一个项目级的方法

声明一个.gitattributes 文件 如果不知道这个文件的意义可以去了解一下~

然后加入此行

* text eol=lf

结尾

有了这么多方法 我们就再也不用担心,看到类似的问题不会解决了~ 另外打个小广告

我还有一个想法

最近看了张鑫旭大佬关于写作的小册,比较有触动。之前虽然也会去更新一些文章,但是动力不足完全随缘更新,也没有对此有过什么计划,所以有没有同学有兴趣一起保持周更文章,互相督促和讨论技术呢? 希望会是一个小群,每个人都能有着比较好的体验,如果感兴趣的话请留言或加v:17643537768

转载自:https://juejin.cn/post/7206749400171872315
评论
请登录