git 自动换行符
前言
最近在提交代码时,始终无法过 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 |
配置有以下区别:
- core.autocrlf input:设置为 input,表示 git 在提交时转换为 LF,检出时不转换
- core.autocrlf true:设置为 true,表示 git 在提交时转换为 LF,检出时转换为 CRLF
- core.autocrlf false:设置为 false,表示提交检出均不转换
saftcrlf - 增强提交时的检查
1 | git config --global core.safecrlf true |
配置有以下区别:
- core.safecrlf true:设置为 true,拒绝提交包含混合换行符的文件
- core.safecrlf false:设置为 false,允许提交包含混合换行符的文件
- core.safecrlf warn:设置为 warn,提交包含混合换行符的文件时给出警告
Note: 尽量不要跨平台提交代码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LuckyHunter's notes!