前言

最近在提交代码时,始终无法过 static analysis。最后发现由于使用了 BeyondCompare 比较更改配置,然后再 Window 提交的代码,提交代码时,没有检查换行符。

基本概念

  • 回车 CR:将光标移动到当前行开头;
  • 换行 LF:将光标“垂直”移动到下一行,并不改变光标水平位置。

CR、LF、CR/LF 为不同操作系统上使用的换行符:

平台 区别
Windows/DOS 采用 CR/LF 表示下一行
Unix/Linux 采用 LF 表示下一行
Mac OS 系统 采用 CR 表示下一行
Mac OS X 系统 采用 LF 表示下一行

解决方法

修改 git config autocrlf 配置:

1
git config --global core.autocrlf input

配置有以下区别:

  1. core.autocrlf input:设置为 input,表示 git 在提交时转换为 LF,检出时不转换
  2. core.autocrlf true:设置为 true,表示 git 在提交时转换为 LF,检出时转换为 CRLF
  3. core.autocrlf false:设置为 false,表示提交检出均不转换

saftcrlf - 增强提交时的检查

1
git config --global core.safecrlf true

配置有以下区别:

  1. core.safecrlf true:设置为 true,拒绝提交包含混合换行符的文件
  2. core.safecrlf false:设置为 false,允许提交包含混合换行符的文件
  3. core.safecrlf warn:设置为 warn,提交包含混合换行符的文件时给出警告

Note: 尽量不要跨平台提交代码