今天早上,我对博客进行修改后,正如往常一样提交,突然控制台出现一堆warning
1
我一看就懵了,当时的表情是这样a934388f8009e99c82e145af4af47270.jpg

理清报错,LF和CRLF的差异

LF(Line Feed)和CRLF(Carriage Return Line Feed)在不同的操作系统中,换行符的呈现方式是不同的。

  • 在Unix、Linux和macOS中,LF(\n)被用作换行符;
  • 而在Windows中,CRLF(\r\n)被用作换行符。
    这种差异导致了在Git协作中的一些问题,特别是在不同操作系统之间进行代码共享和版本控制时。

警告“LF将被CRLF替换”是什么意思?

当我们在Git中进行代码提交时,Git会检查我们的文件中的换行符,并根据当前的配置进行调整。如果Git检测到我们的文件中存在LF,而当前设置是自动将其替换为CRLF,那么就会出现这个警告。

这个警告可能会在以下几种情况下出现:

  1. 当我们在Windows上执行Git命令时,Git默认会将每一行的LF替换为CRLF,以适应Windows操作系统的需求;
  2. 当我们从外部系统(如Windows)下载代码到Git仓库中时,Git可能会检测到文件中存在LF,从而发出警告。

解决警告“LF将被CRLF替换”的方法

要解决警告“LF将被CRLF替换”,我们可以采取以下几种方法:

方法一:禁用自动替换LF为CRLF

我们可以通过以下命令来禁用自动替换LF为CRLF:

1
git config --global core.autocrlf false

这会告诉Git不要自动替换LF为CRLF。这是一个全局设置,对所有的Git仓库生效。

方法二:在项目中设置替换规则

如果我们只想在特定的Git仓库中禁用LF替换为CRLF,可以在该仓库中执行以下命令:

1
git config core.autocrlf false

这会把设置限制在当前的项目中,可以避免不必要的换行符问题。

方法三:使用.gitattributes文件

我们还可以使用.gitattributes文件来明确指定和管理换行符的处理方式。在博客的根目录下创建一个名为.gitattributes的文件,然后将以下内容添加到文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 设置默认规则
* text=auto

# 指定某些文件始终使用 LF 换行符
*.js text eol=lf
*.css text eol=lf
*.html text eol=lf
*.xml text eol=lf
*.json text eol=lf
*.txt text eol=lf
*.md text eol=lf

# 二进制文件不进行转换
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.woff binary
*.woff2 binary
*.ttf binary
*.eot binary

我是source和根目录都添加了,都一样1766799123349.png

省流

这个只是一个警告,我们直接忽略就好。