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

ops/2024/11/30 20:27:40/

前言:

在使用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.ppmy.cn/ops/138021.html

相关文章

抽卡代码(简陋) C#

简单写了一个抽卡代码,没有修饰,用起来其实还挺难受的。抽10连的时候按0可以跳过抽取过程。 using System; using System.Collections.Generic; using System.Threading;class Program {static void Main(){//随机数初始化Random random new Random();…

Python 3 教程第34篇(MySQL 数据库连接 - PyMySQL 驱动)

Python3 MySQL 数据库连接 - PyMySQL 驱动 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查。 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb。 PyMySQ…

QT的exec函数

在Qt框架中,exec()方法是QDialog类(及其子类)的一个成员函数,用于以模态(modal)方式显示对话框。当exec()被调用时,它会启动一个局部的事件循环,这个循环会阻塞对对话框之外的其他窗…

2024.9 Pruning Cycles in UMLS Metathesaurus: A NeuroSymbolic AI Approach

UMLS Metathesdragon 中的修剪周期:一种神经符号 AI 方法 UMLS Metathesdragon 中的修剪周期:一种神经符号 AI 方法 Richard Wallace1、Ravi Bajracharya1、Jans Aasman1 和 Craig Norvell1 Franz Inc https://allegrograph.com/wp-content/uploads/2…

自动类型推导(auto 和 decltype)

在C中,自动类型推导使得编程变得更加灵活和简洁。主要通过auto和decltype关键字实现。以下是这两个关键字的详细解释: 1. auto 关键字 auto 关键字允许编译器根据初始化表达式的类型来自动推导变量的类型。这减少了代码中的冗余,并且使得类型…

IT人日常健康工作生活方案

1. 早餐(7:00-8:00) 早餐是一天中最重要的一餐,提供充足的能量来启动新的一天。根据亚洲饮食的特点,我们加入了米饭、豆腐、蔬菜等传统食材,同时保持高蛋白、低糖的原则。 糙米粥或小米粥(1碗):低GI碳水化合物,有助于稳定血糖,提供持久能量。可加入少量的红枣、枸杞…

git安装与配置与相关命令

一、Git 基本概念 首先要理解 Git 是什么,它怎么帮助我们管理代码: Git 是一个版本控制系统,专门用来跟踪和管理代码的修改历史,帮助开发者进行协作。 **本地仓库:**你电脑上用 Git 管理的项目,存储代码的…

电机驱动MCU介绍

电机驱动MCU是一种专为电机控制设计的微控制器单元,它集成了先进的控制算法和高性能的功率输出能力。 电机驱动MCU采用高性能的处理器核心,具有快速的运算速度和丰富的外设接口。它内置了专业的电机控制算法,包括PID控制、FOC(Fi…