错误背景
开发时,忽然发现自己的一个文件无法查看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还原到上一个没出错的版本,直接重来。
有时候最暴力的方法反而是最快的