【问题记录】git和prettier在格式化的时候出现的末尾cr回车问题

591 阅读5分钟

起因

本来这个问题真没必要写文章,但是出现太多次了

属于是不知道多少回了,所以写下一篇文章记

在配置完 prettier 以后,因为 git clone 代码下来的时候会导致

末尾回车符号问题

也就是你的 prettier 会在每一行末尾

提示你说

Delete

转存失败,建议直接上传图片文件

我们可以在 vscode 左下角看到,CRLF 这个是什么意思呢?

CR LF 是指回车符(Carriage Return)和换行符(Line Feed)。在计算机文本中,CR 和 LF 是用于表示行尾的控制字符。

回车符(CR):在 ASCII 编码中,回车符的十进制值为 13(十六进制为 0x0D)。它表示将光标移动到当前行的开头,而不换行。 换行符(LF):在 ASCII 编码中,换行符的十进制值为 10(十六进制为 0x0A)。它表示将光标移动到下一行的开头,实现换行的效果。 不同操作系统和文本处理工具对于行尾的表示方式有所不同:

Windows 系统:Windows 使用 CR LF(\r\n)作为行尾标识符。换行时,使用回车符和换行符的组合。 Unix/Linux 系统:Unix 和 Linux 系统使用 LF(\n)作为行尾标识符。每行结尾只有一个换行符。 macOS 系统:早期的 macOS 系统使用 CR(\r)作为行尾标识符。但现代的 macOS 系统已经转向使用 LF(\n)。 在不同的操作系统之间交换文本文件时,行尾符的差异可能会导致问题。一些文本编辑器和版本控制系统(如 Git)可以自动处理不同行尾符的转换,以便在不同系统上正确显示和处理文本文件。

了解这些行尾符的概念有助于解决文本处理和跨平台兼容性方面的问题。

所以有些时候 git 在操作的时候会自动转换回车符和换行符,导致 prettier 报错

起因

本来这个问题真没必要写文章,但是出现太多次了

属于是不知道多少回了,所以写下一篇文章记

在配置完 prettier 以后,因为 git clone 代码下来的时候会导致

末尾回车符号问题

也就是你的 prettier 会在每一行末尾

提示你说

Delete

image.png

我们可以在 vscode 左下角看到,CRLF 这个是什么意思呢?

CR LF 是指回车符(Carriage Return)和换行符(Line Feed)。在计算机文本中,CR 和 LF 是用于表示行尾的控制字符。

回车符(CR):在 ASCII 编码中,回车符的十进制值为 13(十六进制为 0x0D)。它表示将光标移动到当前行的开头,而不换行。 换行符(LF):在 ASCII 编码中,换行符的十进制值为 10(十六进制为 0x0A)。它表示将光标移动到下一行的开头,实现换行的效果。 不同操作系统和文本处理工具对于行尾的表示方式有所不同:

Windows 系统:Windows 使用 CR LF(\r\n)作为行尾标识符。换行时,使用回车符和换行符的组合。 Unix/Linux 系统:Unix 和 Linux 系统使用 LF(\n)作为行尾标识符。每行结尾只有一个换行符。 macOS 系统:早期的 macOS 系统使用 CR(\r)作为行尾标识符。但现代的 macOS 系统已经转向使用 LF(\n)。 在不同的操作系统之间交换文本文件时,行尾符的差异可能会导致问题。一些文本编辑器和版本控制系统(如 Git)可以自动处理不同行尾符的转换,以便在不同系统上正确显示和处理文本文件。

了解这些行尾符的概念有助于解决文本处理和跨平台兼容性方面的问题。

所以有些时候 git 在操作的时候会自动转换回车符和换行符,导致 prettier 报错

image.png

那么如何解决呢?

解决方案

  1. 使用 .gitattributes 文件:在你的项目根目录下创建一个名为 .gitattributes 的文件,并添加以下内容:
* text=auto eol=lf

2. 执行

git rm --cached -r .

执行 git rm --cached -r . 命令会将当前目录下的所有文件和文件夹从 Git 的缓存(即暂存区)中删除,但不会影响实际的文件和文件夹。

该命令的作用是将这些文件和文件夹从 Git 的跟踪列表中移除,以使它们不再受版本控制。通过执行这个命令,你可以将之前已经被 Git 跟踪的文件变为未被跟踪的状态。

注意,git rm --cached -r . 只会删除缓存中的文件和文件夹,并不会直接删除实际的文件。

那么如何解决呢?

解决方案

  1. 使用 .gitattributes 文件:在你的项目根目录下创建一个名为 .gitattributes 的文件,并添加以下内容:
* text=auto eol=lf

2. 执行

git rm --cached -r .

执行 git rm --cached -r . 命令会将当前目录下的所有文件和文件夹从 Git 的缓存(即暂存区)中删除,但不会影响实际的文件和文件夹。

该命令的作用是将这些文件和文件夹从 Git 的跟踪列表中移除,以使它们不再受版本控制。通过执行这个命令,你可以将之前已经被 Git 跟踪的文件变为未被跟踪的状态。

注意,git rm --cached -r . 只会删除缓存中的文件和文件夹,并不会直接删除实际的文件。