git的换行
背景
在写一个VBS程序时发现CRLF换行风格会报错.
于是想到尽管目前的软件对换行方式兼容性还ok,
如果不理清git的管理方式,那将后患无穷.
配置项
core.autocrlf
有3种值
true
, checkout CRLF, commit LFinput
, checkout as-is, commit LFfalse
, checkout as-is, commit as-is
从文档上看默认值是 false
.
建议开发前检查模式
1 | git config --global --get core.autocrlf # clone前检查 |
配置
1 | git config core.autocrlf input |
应用场景
设定
- linux电脑运行CRLF代码会报错
- 比如行尾的变量
xxx^M
与行中的变量xxx
无法匹配
- 比如行尾的变量
- windows电脑运行LF代码会报错
- 比如文件头部的一句注释,在windows看来注释掉了整个文件
- false模式 + 提交前检查文件换行风格,简称为 手动管理
开发方策略
-
windows
- 跑项目时设置为
true
可无忧无虑 - 贡献代码给linux,
true
可无忧无虑,input
稍有遗憾(重新clone时自己不能跑) - 贡献代码给windows,必须
手动管理
- 跑项目时设置为
-
linux
- 敢用
true
的都是不嫌麻烦的狠人 - 跑项目时无论什么模式,都需要
手动检查
,不能保证云端一定是LF的 - 贡献代码给linux,
true
和input
都可以,但前面true
已经拉了黑名单 - 贡献代码给windows,必须
手动管理
- 敢用
运行方策略
-
windows
要求所有贡献者都使用
手动管理
-
linux
建议所有贡献者不要使用
手动管理
总结
通常情况下
- windows适合
true
模式 - linux适合
input
模式
许多默认情况下
- 此时使用的是
false
模式,linux给linux开发,windows给windows开发一般不会出什么问题 - 但如果有跨平台的问题,建议转换成已知问题: 通常情况下
windows给windows开发的特殊情况
- 意识不到使用的是
false
模式才最有问题,建议先转换成已知问题 通常情况下 踩踩坑