首页/开发/Git 与协作速查/core.autocrlf 换行符策略
Git 基础与命令88 条

core.autocrlf 换行符策略

控制检出与提交时的 CRLF/LF 转换;跨平台项目更推荐在 .gitattributes 声明 text=auto,让规则随仓库分发。

Git 与协作速查开发更新于 2026-10-13

换行符转换策略

控制检出与提交时的行尾转换:检出时是否把换行转成 Windows 风格、提交时是否统一转成 Unix 风格。跨平台项目更推荐在属性文件里声明文本类型,让规则随仓库分发,而不是每个人各自配置一次。

基本信息

取值一检出转为 Windows 风格、提交转为 Unix 风格,常见于 Windows
取值二提交转为 Unix 风格、检出不转换,常见于类 Unix 系统
取值三不做任何转换,行尾统一交给属性文件
查看现状git ls-files --eol 查看每个文件的行尾状态
推荐做法在属性文件里声明文本类型,规则随仓库走

典型使用场景

  • Windows 与类 Unix 开发者协作同一个仓库
  • 仓库出现整文件级别的假差异
  • 新克隆后发现大量文件显示被修改
  • 引入格式化工具后需要统一行尾
  • 排查换行符导致的脚本执行失败

常用配置

常用配置
git config --global core.autocrlf true    # Windows 常用
git config --global core.autocrlf input   # 类 Unix 常用
git config --global core.autocrlf false   # 不转换,交给属性文件
git ls-files --eol | head                 # 查看索引与工作区的行尾状态
# 推荐在属性文件里声明文本类型,让规则随仓库分发

取值对照

取值检出行为适用系统
true转为 Windows 风格行尾Windows 开发者
input不做转换类 Unix 系统
false不做转换已用属性文件统一行尾的仓库
规则随仓库走比每个人各配一次更可靠:属性文件里的声明对所有克隆生效,评审差异也更干净。
中途修改转换策略会出现整文件规模的假差异,先在少量文件上验证,再决定是否全仓统一。
脚本类文件的行尾很关键:转换不当会让脚本在类 Unix 系统上提示解释器路径相关错误。
查看行尾状态能看到索引与工作区两侧的实际情况,比只看配置项更能确认问题出在哪一侧。

易错点

  • 中途改转换策略产生整文件假差异,误以为仓库被大规模修改,先确认行尾状态再处理
  • 转换与忽略规则互相牵扯,造成同一文件反复变更,需要配合属性文件收口
  • 类 Unix 系统上的脚本文件被转成 Windows 风格行尾,执行时报解释器相关错误
  • 只在个人环境配置转换而不写进属性文件,同事克隆后仍然出现同样的差异

数据来源与参考

  • Git 官方文档:git-config(core.autocrlf)
  • Git 官方文档:gitattributes(text 属性)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌