解决 git 将文本文件视为二进制文件 导致无法查看diff

错误背景

开发时,忽然发现自己的一个文件无法查看git的diff了,并且多了一个提示:
类似于这种(借用下网上的代码块,我的比这个还严重,我的js文件看不了diff了):

$ git diff MyFile.txt
diff --git a/MyFile.txt b/MyFile.txt
index d41a4f3..15dcfa2 100644
Binary files a/MyFile.txt and b/MyFile.txt differ

解决步骤1:检查有无特殊字符

要确保新增加的代码里没有特殊字符,我的情况就是因为增加了一个特殊字符,导致git认为这个代码文件是个二进制文件

解决步骤2:告诉git这是个文本文件

在项目的根目录处,创建一个文件,命名为.gitattributes,手动给文件设置diff属性,这是个例子:

src/Acme/DemoBundle/Resources/public/js/i18n/* diff
doc/Help/NothingToSay.yml                      diff
*.css                                          diff

如果要检查文件上是否设置了属性,可以在 git check-attr 的帮助下执行此操作

git check-attr --all -- src/my_file.txt
解决步骤2参转载自:https://www.it-swarm.dev/zh/git/%E4%B8%BA%E4%BB%80%E4%B9%88git%E5%B0%86%E6%AD%A4%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E8%A7%86%E4%B8%BA%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%EF%BC%9F/940576972/

原因:
如果你没有设置文件的类型,Git会尝试自动确定文件的类型,并且将一个包含很长的行、或者宽字符 (例如Unicode)的文件视为二进制文件。
通过使用 .gitattributes 文件,你可以告诉Git这个文件的类型。
手动给文件、文件路径设置 diff 属性可让Git将文件内容解释为文本并执行常规差异。

解决步骤3:git回退版本

备份自己的代码到别的地方,然后git还原到上一个没出错的版本,直接重来。
有时候最暴力的方法反而是最快的

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值