解决 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还原到上一个没出错的版本,直接重来。
有时候最暴力的方法反而是最快的
解决 git 将文本文件视为二进制文件 导致无法查看diff相关推荐
- 解决git切换分支导致代码丢失的问题
解决git切换分支导致代码丢失的问题 问题背景: 因为本人手里有好几个不同的项目,当手里有正在做的项目,却被临时叫去修改另外一个项目,而此时又不想把现有的代码提交,于是就强制切换到了另外一个分支上 ...
- C语言基础14——文件操作。文本文件或二进制文件读写。通讯录的改造。文件缓冲区讲解
目录 为什么使用文件? 什么是文件? 文件的打开和关闭 文件指针 文件的打开和关闭 文件的打开方式 流 重定义文件 文件流 文件的顺序读写 以字符形式读写文本文件 fputc()函数 fgetc()函 ...
- 如何解决Git中的合并冲突
如何解决Git中的合并冲突? #1楼 对于想要半手动解决合并冲突的Emacs用户: git diff --name-status --diff-filter=U 显示所有需要解决冲突的文件. 依次打开 ...
- c语言实现指定路径文件读取_C语言实现文件复制功能(包括文本文件和二进制文件)...
文件的复制是常用的功能,要求写一段代码,让用户输入要复制的文件以及新建的文件,然后对文件进行复制.能够复制的文件包括文本文件和二进制文件,你可以复制1G的电影,也可以复制1Byte的txt文档.实现文 ...
- 解决git下载出现:Failed to connect to 127.0.0.1 port 1080: Connection refused拒绝连接错误
解决git下载出现:Failed to connect to 127.0.0.1 port 1080: Connection refused拒绝连接错误 文章目录: 一.git拒绝连接原因分析 二.错 ...
- 计算机史话 —— 回车和换行 与 文本文件和二进制文件
回车:carriage return 换行:line feed 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打 10 个字符.但是它有一个问题, ...
- 【VS问题已解决】警告被视为错误 - 没有生成“object”文件
[VS问题已解决]警告被视为错误 - 没有生成"object"文件 目前遇到这个问题主要是因为代码存在不明显的语法错误.在VS生成解决方案的编译阶段之前会检查有没有明显的语法问题. ...
- 解决git push 中remote: Permission to xxxxx.git denied to xxx. fatal: unable to acce
解决git push 中remote: Permission to xxxxx.git denied to xxx. fatal: unable to acce 解决方案一 解决方案二 解决方案一 第 ...
- 第十一章 文件操作_C语言实现文件复制功能(包括文本文件和二进制文件)
文件的复制是常用的功能,要求写一段代码,让用户输入要复制的文件以及新建的文件,然后对文件进行复制.能够复制的文件包括文本文件和二进制文件,你可以复制1G的电影,也可以复制1Byte的txt文档. 实现 ...
最新文章
- win 开机 Microsoft corparation 滚动栏
- dede/archives_do.php,dedecms后台编辑文章时archives_do.php显示空白解决办法
- 每日一皮:前程序员离职后没人想接的代码...
- python中处理日期和时间的标准模块是-Python time模块参考手册
- 金山WPS发布了Linux WPS Office
- Github 的清点对象算法
- java 8 两个list_java集合框架综述
- 苹果新隐私政策在iOS14.4测试版上线:能允许或拒绝“跟踪”
- git commit报错(husky > commit-msg hook failed)
- VMware Linux VDI 安装步骤
- 免费域名 空间 cdn
- python中能用π吗_python里π
- 【Hadoop笔记_3】MapReduce、案例分析、实例分析代码
- php爬虫框架使用案例QueryList,将数据爬到mysql数据库
- U盘不能复制超过4G的文件解决方法
- java流量监控系统demo_搭建一个简单的基于web的网络流量监控可视化系统
- mongo配置项说明
- 如何区分独立服务器与VPS主机?
- COGS 2211. [BZOJ3653]谈笑风生
- JavaScript实现爆炸碎片的 图片切换 效果
热门文章
- 计算机多媒体论文致谢,这篇博士论文《致谢》刷屏,句句扎心……
- 积分换元法中换元单调性问题的讨论
- 什么是MTTF、MTBF、MTTR?
- android airplay音乐播放器,您需要知道的关于使用AirPlay播放音乐的一切 | MOS86
- modelsim is exiting with code:211 10秒后自动关闭退出
- JVM-04-运行时数据区-堆,方法区
- spss 通径分析_使用SPSS线性回归实现通径分析的方法-学习资料.pdf
- python 报错'tuple' object does not support item assignment
- 常用工具(一)——安卓手机app抓包burpsuite
- 安装python包的时候文件夹权限报错:InvalidArchiveError(“Error with archive D:\\anaconda\\pkgs\\cudnn-8.4.1.50-h)