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

VS2017与GitHub协作时.cpp被识别为二进制文件无法显示Diff求助

解决VS2017中GitHub协作时.cpp文件被识别为二进制无法显示Diff的问题

我之前也碰到过几乎一模一样的情况,折腾了好一阵才解决,给你几个实用的排查和解决方向:

1. 确保.gitattributes的配置正确且生效

  • 首先确认文件放在仓库根目录,不是项目子文件夹里——我之前就犯过这个错,放错位置等于白配置。
  • 文件内容要准确,建议直接写:
    *.cpp text diff
    
    加上diff是明确告诉Git用文本对比规则,避免歧义。如果之前需要指定换行符,也可以合并进去:*.cpp text eol=lf diff

2. 清除Git缓存重新追踪文件

Git会缓存文件的属性信息,就算改了.gitattributes,已追踪的文件可能还是保持旧的二进制标记。执行以下命令重置:

git rm --cached -r .
git add .
git commit -m "Fix cpp files being treated as binary by Git"

这个操作会把所有文件从缓存移除,再根据新的.gitattributes重新添加,让新配置生效。

3. 检查文件编码是否带BOM

VS有时候会偷偷给UTF-8文件加BOM(字节顺序标记),这会让Git误判为二进制:

  • 打开你的.cpp文件,点击VS顶部菜单的「文件」→「高级保存选项」
  • 确认编码选择的是「UTF-8 无签名」,而不是「UTF-8 带签名」
  • 保存后再重复步骤2的Git命令,重新提交文件

4. 排查VS2017 Git插件的问题

如果命令行里git diff能正常显示文本对比,但VS里还是显示“Binary files are not shown”,那大概率是VS插件的问题:

  • 关闭VS,删除项目根目录下的.vs隐藏文件夹(里面是VS的缓存文件)
  • 重新打开项目,刷新Git面板查看Diff
  • 如果还是不行,尝试把VS2017更新到最新的补丁版本,或者重置VS的Git相关设置(「工具」→「导入和导出设置」→「重置所有设置」)

验证配置是否生效

可以用Git命令检查单个文件的属性,确认文本标记已设置:

git check-attr --all your-file.cpp

如果输出里有text: set和diff: set,说明配置已经生效了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:37:48