You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10下Git设置autocrlf=false仍出现CRLF换行问题求助

解决Win10下Git autocrlf=false仍自动转换换行符的问题

问题根源

从你给出的git ls-files --eol结果里的attr/text=auto就能找到原因:Git属性(gitattributes)的优先级高于core.autocrlf配置。哪怕你把autocrlf设为false,只要存在text=auto的属性规则,Git就会自动识别文本文件,并在检出时把仓库里的LF转换成当前系统默认的换行符——Win10默认是CRLF,所以就出现了你看到的情况。

text=auto的规则可能来自三个地方:

  • 仓库根目录的.gitattributes文件(最常见)
  • 全局的.gitattributes配置文件(Win10路径通常是C:\Users\你的用户名\.gitattributes)
  • Git内置的默认属性规则

另外你git config --list里出现三次core.autocrlf=false,说明全局、系统、本地配置都关了自动转换,但架不住gitattributes的规则覆盖了它。

解决步骤

  1. 检查并修改.gitattributes规则
    先看仓库根目录有没有.gitattributes文件,打开后找类似* text=auto的行:

    • 如果要强制所有文本文件保持LF(和远程仓库一致),把该行改成* text=lf
    • 如果想完全禁用自动转换,直接删掉* text=auto这条规则,或者添加* -text(表示所有文件都不视为文本文件,不做换行符转换)
  2. 检查全局gitattributes配置
    如果仓库里没有.gitattributes,去用户目录下找全局的.gitattributes文件,同样检查并修改text=auto相关规则。

  3. 强制工作区使用LF
    可以在本地仓库的.git/config里额外添加:

    [core]
      eol = lf
    

    这个配置会强制Git在检出文本文件时使用LF,不管系统默认是什么。

  4. 修复已检出的文件
    把已经转成CRLF的工作区文件恢复成LF:

    # 重新规范化所有文件的换行符为LF
    git add --renormalize .
    git commit -m "Normalize line endings to LF"
    # 重置工作区,确保文件是LF格式
    git reset --hard HEAD
    

内容的提问来源于stack exchange,提问作者Dennosaur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:24:28