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 属性:

      1
      git config core.autocrlf
    • 查看 autocrlf 的全局属性:

      1
      git config --global core.autocrlf
    • 设置当前项目的 autocrlf 属性:

      1
      git config core.autocrlf true/input/false
    • 设置 autocrlf 的全局属性:

      1
      git config --global core.autocrlf true/input/false
  • savecrlftruefalsewarn

    • 拒绝提交包含混合换行符的文件

      1
      git config --global core.safecrlf true
    • 允许提交包含混合换行符的文件

      1
      git config --global core.safecrlf false
    • 提交包含混合换行符的文件时给出警告

      1
      git config --global core.safecrlf warn