Git兼容Windows和Linux换行规则设置
如果一个项目需要同时在Linux下和Windows下编辑(例如WSL或者SCP拷贝),换行符的差别会带来各种兼容性问题,例如脚本无法运行、Git比较所有文件皆不相同等。因此需要统一格式。
相关配置
eol: 设置工作目录中文件的换行符,有三个值lf、crlf和native(默认,同操作系统)autocrlf:true表示检出是转换CRLF,提交时转换为LFinput表示检出是不转换,提交时转换为LFfalse表示不做转换
safecrlf:true表示不允许提交时包含不同换行符warn则只在有不同换行符时警告false则允许提价时有不同换行符存在
情况一:兼容所在平台
要求Git在Windows上换行符使用crlf,在Linux上使用lf。提交时将crlf视作lf,检出时将lf转换为系统所需的。
运行
git config --system core.eol native
git config --system core.autocrlf true # Windows
git config --system core.autocrlf input # Linux
可以酌情考虑设置safecrlf
情况二:Windows平台兼容Linux格式
要求Git在Windows和Linux上都使用lf。提交时将crlf视作lf,检出时lf不转换。
运行
git config --local core.eol lf
git config --local core.autocrlf input
情况三:Linux平台兼容Windows格式
要求Git在Windows和Linux上都使用crlf。提交时将crlf视作lf,检出时将lf转换为crlf。
运行
git config --local core.eol crlf
git config --local core.autocrlf true
(理论上要这么设,但是没有测试过)
其他说明
- 配置修改后不会立刻生效,一种简单方法是删掉所有被跟踪的文件然后用Git恢复,此时它们就会被检出为符合要求的格式了;
- 根据需要选择配置的
--local、--global和--system;
参考资料
- 8.1 自定义 Git - 配置 Git《格式化与多余的空白字符》一节;
8.1 Customizing Git - Git Configuration《Formatting and Whitespace》一节;