git中的换行符配置

Dos/Windows系统中的换行符使用的是0x0D0A(CRLF),而unix/linux/mac系统中使用的换行符为0x0A(LF)

autocrlf

git提供了一个autocrlf的配置项,用于提交和检出时自动替换换行符,它的可选项有:

  • true: 提交时转换为linux格式 LF,检出时转换为windows格式 CRLF (windows版本git工具安装时默认采用本选项)

  • false: 提交检出均不转换

  • input: 提交时转换为linux格式 LF,检出时不转换

1
2
3
4
5
6
7
8
# 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

# 提交时转换为LF,检出时不转换
git config --global core.autocrlf input

# 提交检出均不转换
git config --global core.autocrlf false

safecrlf

如果把 autocrlf 选项配置成了 false,建议将 safecrlf 选项配置为 true

safecrlf 选项用于检查提交的文件中包含混合换行符,可选项有:

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

  • false: 允许提交包含混合换行符的文件

  • warn: 提交包含混合换行符的文件时进行告警

1
2
3
4
5
6
7
8
# 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

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

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

windows的git命令行中提供了 dos2unix 工具可进行换行符转换。

多平台开发时的建议

1
2
git config --global core.autocrlf input
git config --global core.safecrlf true