关于Git的CRLF和LF换行符问题
首先来理清三大操作系统换行符的差异:
- Linux、Mac:LF换行,转义序列\n;
- Windows:CRLF回车和换行,转义序列\r\n;
VSCode中可以显示设置换行符,设置中搜索:files:eol:
跨平台开发中,使用Git提交代码会遇到换行符的问题,解决方案如下。
理想的环境是:Windows平台下,在拉取代码时转换为CRLF,提交代码时转换为LF;Linux和Mac平台拉取代码时转换为LF,提交代码时不需要转换。这样就能保证仓库中始终保持LF换行。
使用core.autocrlf配置Git行尾
git config --global core.autocrlf [true|false|input]
- true:拉取代码时转换CRLF,提交代码时转换为LF;
- input:拉取代码时不转换,提交代码时转换为LF;
- false:关闭转换。
因此,Windows平台通常设置为true:
git config --global core.autocrlf true
Linux和Mac平台设置为input:
git config --global core.autocrlf input
Windows平台设置后,在提交代码时会出现警告:
warning: LF will be replaced by CRLF
网上流传关闭这个警告的方法就是将core.autocrlf设为false,但不推荐这样做。可以设置core.safecrlf为false来关闭警告。
使用core.safecrlf检测行尾
git config --global core.safecrlf [false|warn|true]
- false:不做任何检查;
- warn:在提交时检查并警告;
- true:在提交时检查,如果发现混用换行符则拒绝提交。
core.safecrlf的设置不影响core.autocrlf设置的自动转换。因此,如果已经设置了自动转换,则可以将core.safecrlf设置为false来关闭警告。