Git CRLF 换行符问题

CRLF

CRLF:Carriage-Return Line-Feed 回车换行

CRLF:回车换行。

  • CR:回车,使用\r符号表示,ASCII 码为 13,十六进制代码为 0x0D;

  • LF:换行,使用\n符号表示,ASCII 码为 10,十六进制代码为 0x0A。

不同系统下的换行符
  • Windows/DOS:CR/LF

  • Unix/Linx:LF

  • Mac OS:CR

所以,Windows 系统上换行在文本文件中是使用 0d 0a 两个字节表示,而在 Unix/Linx或苹果系统上换行则是使用一个字节 0a 或 0d 表示。Unix/Linux/Mac系统下的文件在Windows里打开的话(使用Windows自带记事本),会出现换行丢失,所有文字会变成一行,整个文本会乱成一团。Windows系统下的文件在Unix/Linux/Mac里打开的话,在每行的结尾可能会多出一个^M符号。

Git CRLF

Git 在默认情况下,提交时会将 CRLF 转换为 LF,在拉取时将 LF 转换成 CRLF。我们可以通过设置 autocrlfsafecrlf 来处理 CRLF 的转换。

  • autocrlf 属性:trueinputfalse
    • true:提交时,CRLF 转换为 LF;拉取时,LF 转换为 CRLF

    • input:提交时,CRLF 转换为 LF;拉取时,不进行转换。

    • false:提交拉取时都不转换。

    • 查看当前项目的 autocrlf 属性:

    “`

git config core.autocrlf

```



+    查看 `autocrlf` 的全局属性:

```
</code></pre>

git config --global core.autocrlf

<pre><code>```



+    设置当前项目的 `autocrlf` 属性:

```
</code></pre>

git config core.autocrlf true/input/false

<pre><code>```



+    设置 `autocrlf` 的全局属性:

```
</code></pre>

git config --global core.autocrlf true/input/false

<pre><code>```
  • savecrlftruefalsewarn
    • 拒绝提交包含混合换行符的文件

    “`

  • </ul>

    <p>git config –global core.safecrlf true

    <pre><code>“`

    + 允许提交包含混合换行符的文件

    “`
    </code></pre>

    git config –global core.safecrlf false

    <pre><code>“`

    + 提交包含混合换行符的文件时给出警告

    “`
    </code></pre>

    git config –global core.safecrlf warn

    <pre><code>“`