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

Git中.gitattributes配置.cs为文本文件不生效问题求助

解决Git误将.cs文件识别为二进制的问题

这种情况我之前排查过好几次,大概率不是你的属性配置写错了,而是Git的自动检测逻辑或者局部配置在捣乱,咱们一步步来定位解决:

  • 先确认你的全局配置是否真的生效
    直接针对出问题的.cs文件检查属性:

    git check-attr --all path/to/your/target.cs
    

    如果输出里有text: set,说明全局的*.cs text配置已经生效,问题出在其他环节;如果没有,那你得先确认全局属性文件的路径和内容是否正确,用git config --get-all core.attributesfile查看全局属性文件位置,打开文件确认有没有*.cs text这一行。

  • 检查文件本身的编码/特殊字符
    Git会自动扫描文件内容,如果文件里包含空字节(\x00)或者是UTF-16带BOM的编码,它会默认判定为二进制。你可以用命令查看文件开头的字节:

    hexdump -C path/to/your/target.cs | head
    

    如果看到开头是ff fe或者fe ff(UTF-16的BOM),要么把文件转成UTF-8无BOM编码,要么在属性里明确指定编码:

    *.cs text working-tree-encoding=UTF-16
    
  • 排查仓库本地的.gitattributes覆盖
    仓库根目录的.gitattributes优先级比全局配置更高,看看这个文件里有没有针对.cs的设置,比如*.cs binary或者没配置text。如果有冲突,修改它加上:

    *.cs text diff
    

    这里的diff关键字会强制Git生成文本diff,哪怕它觉得文件是二进制。

  • 清除Git的缓存状态
    有时候Git已经缓存了文件的二进制标记,需要重置缓存重新识别:

    git rm --cached path/to/your/target.cs
    git add path/to/your/target.cs
    

    执行完之后再用git diff看看,应该就能正常显示文本差异了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:25:43