需求
- 减少冲突,尤其跨平台协作时。
- 现代化
- 提高性能
思考
-
“达成一致”是冲突最少的,然而在跨平台协作时,正是因为过去的 OS 非要搞出 CR、CRLF、LF 三种换行符,才会有“不一致导致的冲突”。macOS 已经早早妥协,由 CR 改为 LF。2026 年的 Windows 也基本投降了。所以目前来说,“达成一致”是比较容易的。
-
2026 年的 Windows 10/11 依然是最好的 Linux 发行版,是现代化的 OS,“几乎”完美兼容 LF。稣常用的软件也都支持 LF,所以稣个人单方面宣布:世界上只有 LF 这一种换行符。
-
为了提高性能,autocrlf 必须关掉,因为——世界上只有 LF 这一种换行符!
推论
-
由于“世界上只有 LF 这一种换行符”,稣在 Windows 上使用 WSL 时,都能保证文本文件的换行符是统一的,不会出现“在原生 Windows 下 clone 的 bash 脚本是 CRLF 换行符,到 WSL 运行它,却发现换行符不对”这样的问题。如果您也常在原生环境和 WSL 下使用同一个仓库,那么把 core.autocrlf 设为 input 就不是个好的方案。
-
LF 比 CRLF 节约硬盘,在 SSD 这么贵的 2026 年,这样的设置对穷稣来说简直是救命。
-
稣在 Windows 上 clone 的仓库,可以直接复制到 Debian下用,反之亦然。这可太重要了,因为稣经常在 Windows 上 clone 仓库,然后 Debian 那边如果也要用,就不想再从外网慢慢 clone 一遍了,直接内网复制过去更快。
具体操作
在 Windows 安装 Git 时,CRLFOption 这步有三个选项:
- CRLFAlways
- LFOnly
- CRLFCommitAsIs
对应如图:

请选择第三个,即 CRLFCommitAsIs。
如果已经安装好了,不记得之前选哪个,则可以显式设置一下,在 Windows Terminal 管理员模式下:
1 | git config --system core.autocrlf false |
以上针对本机生效,如果您机器上有多个用户,建议这样做。如果没有管理员权限,那就只能针对当前用户设置了,相应的命令为:
1 | git config --global core.autocrlf false |
core.safecrlf 的默认值就是 true,这里也显式设置,是建议您不要关掉它。
例外
Windows 上还是有些软件对某些文本文件只支持 CRLF 的,所以需要使用 .gitattributes 来排除它们,比如说:
1 | * text=auto eol=lf |
注意第一行,它是设置默认换行符为 LF,这符合“世界唯一”的设定,要牢记。
如果您使用微信,也可以关注公众号 UMU618,在公众号文章里评论。