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》一节;