解决 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还原到上一个没出错的版本,直接重来。
有时候最暴力的方法反而是最快的

    原文作者:qijingpei
    原文地址: https://blog.csdn.net/qijingpei/article/details/110402054
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞