当前位置: 首页 > article >正文

误使用git stash drop删掉本地保存,如何恢复

前言:

在使用git时候我们会临时切换一些分支,而切换时候你本地会有一些更改了的代码,但是这些代码还没有写完整,所以我们一般会进行git stash save "名字" 本地保存一下。然后等后面代码切换回来之后,再 git stash pop stash@{num} ,代码恢复之后我们会把这些临时本地保存代码stash记录清除掉,但是清除就可能出现误操作。我有次就遇到了误删,因为git stash list里面有五六个版本,而且很多对应了一个commit。这个时候我们怎么找回误删的的代码呢?

给大家分享一下自己的实操。

恢复步骤记录:

显示出所有不可访问的对象
git fsck --lost-found

一般来说有很多的搜索结果,多达上百条,这个时候我们可以去进行去排除一些用不到的数据。

我们来看看这些数据类型的含义:

blobs 每个blob代表一个(版本的)文件,blob只包含文件的数据,而忽略文件的其他元数据,如名字、路径、格式等。tags tag用于给某个上述类型的对象指配一个便于开发者记忆的名字, 通常用于某次commit。

trees 每个tree代表了一个目录的信息,包含了此目录下的blobs,子目录(对应于子trees),文件名、路径等元数据。因此,对于有子目录的目录,git相当于存储了嵌套的trees。

commits 每个commit记录了提交一个更新的所有元数据,如指向的tree,父commit,作者、提交者、提交日期、提交日志等。每次提交都指向一个tree对象,记录了当次提交时的目录信息。一个commit可以有多个(至少一个)父commits。

经过分析我们知道commit类型的后面跟着的id是我们可以用到的,但是搜索出来的列表不是按照时间来进行排序的,这样就给我们又造成了一些选择的负担,好在虽然搜索结果很多,但是commit类型的结果数量还是可以接受的,所以我用了一个笨办法,我把所有搜索到的结果都放到一个文件中,然后只保留下commit类型的数据。

查看每个id下的代码文件是否是需要恢复的

git stash apply  指定id

如下所示:

但是不是一次就可以找到对应的id,所以当查看到代码文件是有问题的时候,我再复位清除一次代码文件

git reset --hard

直至找到对应的文件


http://www.kler.cn/a/414160.html

相关文章:

  • 51单片机从入门到精通:理论与实践指南常用资源篇(四)
  • C++ 基础04
  • 深入解析 Canny 边缘检测:原理、步骤与实践应用全攻略
  • Redis的基础知识·
  • java虚拟机——jvm是怎么去找垃圾对象的
  • word emailing + vba拆分word文件并转pdf
  • json转sql建表语句
  • Proteus 8.17的详细安装教程
  • IDEA报错: java: JPS incremental annotation processing is disabled 解决
  • 【电力行业标准】《电力信息化软件工程度量规范》(DL/T 2015-2019)-费用标准解读系列20
  • Python 散列类型:数据索引与处理的智慧密钥
  • 深度学习Pytorch中的模型保存与加载方法
  • Web Worker 入门:让前端应用多线程化
  • JS异步进化与Promise
  • 六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序
  • scala的守卫语句格式
  • Vue.js 中的事件监听与事件修饰符
  • git flow 相关知识 git rebase 与 merge 合并差异比较
  • TortoiseSVN 基本操作 - 下载/上传/更新/repo查看
  • PAT甲级-1064 Complete Binary Search Tree