git误操作导致文件删除,如何恢复删除的文件也分为多种场景,例如add且commit,add未commit,git rm -rf等多种情况。下面只说明add未commit情况下执行了reset --hard commitId后文件修复过程。

系统环境:CentOS

恢复步骤:

1、git fsck > files.txt   或获取到所有悬挂的文件,当然也可通过find .git/objects -type f | xargs ls -lt | sed 60q查看最近60次add的文件,将悬挂的文件名称存入files.txt中,文件内容如下

dangling blob d6bf40c9f290161c87230787a1056d977d36c821
dangling blob d61f00d8cad3920809f4d992ac3031b3f32e7f10
dangling blob d7af99b5e2ae9a21d534f1965c35a2b572143322
dangling blob d96f555491868caffb665c2dd391108abfcac581
dangling blob da2f86e1710b8539b8047e4452f1ff6cb0e1f211
dangling blob e0dfd04e4d3fcbaa6588c8cbb9e9065609bcb862
dangling blob e06f361eb6d429290806b9f9cd7a0aebce22be4d
dangling blob e2bfcf6c21b1b9116459e2213b0bd9b5f52b4b67
dangling blob e23f0b42283d43c029f747596ed573859c917876
dangling blob e3dfe04304e451a9a75a46fd0d052279f601f09d
dangling blob f50fc6c14e67a228c4ba9a61b1357c16410e8228
dangling blob f55f1b358726d8f23b1a2e57bee6863387bd7ad4
dangling blob fe4f6f5494085ec15a05838bdf793f3ef0532f5f

2、编辑文件去掉dangling blob 关键字,当然也可在后面脚本处理,这里直接vim处理 1,$s/dangling blob //g,最终只留下类似fe4f6f5494085ec15a05838bdf793f3ef0532f5f的文件信息

3、将blob字节文件还原为原文,这里注意,文件名称已经丢失,最终只能通过手动更新文件名称

#!/bin/bashfor line in `cat files.txt`
doecho "File:${line}"git show ${line} > files/${line}.txt
done

通过git show 将blob文件还原为对应文件。

4、从还原的所有文件中查找需要找回的文件,并且更名。

grep "关键" *.txt

至此git  add 且未commit的文件,在执行reset --hard commitId后的恢复操作结束。如果有更好的操作请留言!

git add未commit reset恢复文件相关推荐

  1. Git add回退 commit回退

    Git add回退 & commit回退 Git 有三种状态,你的文件可能 处于其中之一: 已提交(committed).已修改(modified) 和 已暂存(staged). • 已修改表 ...

  2. Git add 、commit后报错:nothing to commit, working tree clean

    原因: 文件没有修改的地方,和上仓库最新的文件相比没有改变,所以报错

  3. git add 所有修改文件_Git 技术干货!工作中quot;Gitquot;的使用实践和常用命令合集!

    作者:洋仔聊编程 出自:InfoQ 写作平台 原文:xie.infoq.cn/article/1ce91dc60431b1b8845729d41 工作中git是一项必不可少的技能,在项目的开发进程中起 ...

  4. git add 文件夹_软件测试学习资源—Git 基础使用

    环境准备: 操作系统: Win7 旗舰版 64位 Git:自官网下载2.22 Windows版本,默认安装 任意位置新建一个空白文件夹:d:/B03_Git 在该文件夹中点击鼠标右键,选择" ...

  5. git 添加未跟踪的文件

    问题描述: 在多个目录下新增了很多文件,但git add时出现大量的文件未跟踪:git push时这些文件并不会被更新到远程库,这是为什么呢? 对比思维: 通过对比发现这次提交和以前有什么不同呢? 1 ...

  6. Git笔记(一)——[commit, checkout]

    其实一直觉得自己是会用Git的,毕竟咱也是用Github的人啊!可是三月份找工作时候的一次面试颠覆了我的看法: Q: 用过Git吗?平常怎么用的? A: 用过的,一般就是add,commit,push ...

  7. git add remote_Git常用命令

    新建代码库 在当前目录新建一个Git代码库 git init 初始化为master分支 新建一个目录,将其初始化为Git代码库 git init [project-name] 克隆远程代码库到本地 g ...

  8. git忽略已被跟踪的文件

    问题: 现在项目的根目录放了 .gitignore 文件,并且git远程仓库的项目根目录已经有了 logs文件夹. 由于每次本地运行项目,都会生成新的log文件,但是我并不想提交logs文件夹里面的内 ...

  9. 【git】git提交忽略不必要的文件或文件夹

    对于经常使用Git的朋友来说,.gitignore配置一定不会陌生.废话不说多了,接下来就来说说这个.gitignore的使用. 首先要强调一点,这个文件的完整文件名就是".gitignor ...

  10. git add .出现尚未暂存以备提交的变更

    问题描述: 1.删除文件与文件夹 2.git add.commit .push 结果却是修改的文件与文件夹都没有更新? git status:提示信息: 尚未暂存以备提交的变更: 修改尚未加入提交(使 ...

最新文章

  1. LUA脚本调用C场景,使用C API访问脚本构造的表
  2. VLC播放器如何录制rtsp流生成视频文件?
  3. Python-OpenCV-- 台式机外接摄像头pyTesseract文本框实时检测
  4. Java 中接口和抽象类竟然有 7 点不同?
  5. 为什么Siri总是像个智障?智能助手背后的技术到底有多难?
  6. 学Python前途如何,带你了解Python的优势!
  7. idea找不到或无法加载主类问题解决
  8. 【图像隐写】基于matlab DWT+IDWT数字水印嵌入+提取【含Matlab源码 1530期】
  9. Python顺序结构
  10. 计算机色彩知识调研(一):色域
  11. 放弃了灰色轨迹的人,放弃了木马帝国的人(ALLyeSNO)
  12. 运筹说 第6期|运筹学自媒体的“百家争鸣”
  13. 第 256 场力扣周赛(状态压缩+dp,二进制子序列的动规、940)
  14. 2022年茶艺师(中级)特种作业证考试题库及在线模拟考试
  15. [转]SIFT,SURF,ORB,FAST 特征提取算法比较
  16. 搜狗浏览器,添加自定义搜索引擎~
  17. 查看虚拟机里的Centos7的IP
  18. 计算机专业学生应聘岗位,大学生应聘计算机岗位简历制作技巧
  19. Attempting to fetch value instead of handling error Internal: failed to get device attribute 13 for
  20. 计算机应用技术重点学科,计算机应用技术省级重点学科

热门文章

  1. CAD命令栏不见了怎么调出来?CAD命令行调出教程
  2. 阿里云域名购买与备案,解析使用教程
  3. 抢食生鲜,美团最大对手会是拼多多
  4. centos 6.5安装杀毒软件clamav
  5. python中flag=1什么意思_001_flag包详解
  6. 基于simulink的Active anti-islanding-AFD主动反孤岛模型仿真
  7. Vue 2.6.13 源码解析(四) Observer、Dep、Watcher与订阅
  8. 麦克林托克和转座基因
  9. spark streaming核心原理及实践
  10. 2018年航空概论期末考试