一、行结束符

在 Windows 中,行结束符使用回车符(CR,\r)和换行符(LF,\n)的组合表示。这个组合被称为回车换行(CRLF)。在 Windows 的文本文件中,每行的结束都由回车换行表示。 而在 UNIX 中,行结束符只使用换行符(LF,\n)表示。因此,在 UNIX 系统中,每行的结束只由换行符表示。 每次按键盘上的 return 时,会插入一个称为行结束符的不可见字符。 不同的操作系统处理行结束符的方式不同。 在使用 Git 和 GitHub 协作处理项目时,Git 可能产生意外结果,例如,你在 Windows 计算机上操作,而你的协作者是在 macOS 中做的更改。 你可以将 Git 配置为自动处理行结束符,以便与使用不同操作系统的人员有效地协作。

二、Git 行结束符转换全局配置

2.1、配置项说明

git config core.autocrlf 命令用于更改 Git 处理行尾的方式。 它将采用单一参数。

  • true:Git 会在文件提交时将行结束符自动转换为操作系统的默认换行符,并在文件签出时将其转换回来。即在 Windows 上签出的文件将使用回车换行(CRLF),而在 Unix 和 Linux 上签出的文件将只使用换行符(LF)。
  • false:Git 不会自动转换行结束符。
  • input:Git 会在文件提交时将行结束符转换为换行符(LF),并在文件签出时保持不变。

即无论在哪个操作系统上签出文件,都将使用换行符(LF)。

2.2、Windows 全局配置

签出文件时行结束符会转换为 Windows 行结束符(CRLF) 提交文件时行结束符会转换为 Unix 行结束符(LF)
1
git config --global core.autocrlf true

2.3、macOS 全局配置

签出文件时行结束符会转换为 Unix 行结束符(LF)
1
git config --global core.autocrlf input