0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

恢复被删除的Git stash记录

马哥Linux运维 来源:马哥Linux运维 2023-12-10 15:46 次阅读

一、问题

有时候在 git stash 非常有用,但是我们能由于一些错误的操作,导致将 git stash 中内容被删除掉,误删 stash.

二、知识点

git fsck命令用于检查 Git 仓库中的对象的完整性和一致性。它可以发现和报告一些潜在的问题,比如损坏的对象、丢失的对象引用等。

  1. 检查对象完整性:确保所有的对象(提交、文件树、文件等)在物理上存在且没有损坏。如果有对象损坏,git fsck将报告并显示问题。

  2. 寻找不可达对象:Git 使用引用来跟踪对象,如果某个对象没有任何引用指向它(即不可达对象),git fsck会发现并报告这些不可达的对象。

  3. 查找丢失的对象引用:它会检查是否存在引用(比如分支、标签等),但没有对应的对象存在。这可能是因为删除了对象或引用指向了一个不存在的对象。

  4. 输出报告:将列出发现的问题,并提供相应的修复建议或提示。

三、复制一个副本

为了安全和不熟练操作 git stash 的同学,将当前项目准备一个副本,在副本中进行操作,防止第一个现场丢失。

四、查看 unreachable 列表

切换到副本中,所有的操作放在副本进行:

git fsck --unreachable

	

查看所有unreachable的记录, 如同下面的例子:


	
git fsck --unreachable
Checking object directories: 100% (256/256), done.
unreachable blob 08a0724cff104d83f3c261b68487e5b5dfb0bc92
unreachable blob 09e0e7369d8c60923a53c8097674dde7f71a0cc0
unreachable blob 0b00205b03a9d5a7c311907b968d41da09ee0662
unreachable blob 0ba035459d1ce597a1cbba64a5f1073c467af198
unreachable blob 0f8093bb5835971fad89f8274387d15d38eba9c7
unreachable blob 11205462d9730314c6ac8f0320ef0c6247af4b7a

五、将 unreachable 内容提取到编辑器中

最好准备一个编辑器,将所有的内容复制出来,因为这个列表可能很长,在终端展示有限,也不好搜索,将其复制出来放在编辑器中(vscode)在内过多的时候有查找等优势。

六、 认识 unreachable 分类

类型 描述
Commit 不再有分支或标签指向的提交
Tree 不再有提交指向的文件树
Blob 不再有文件树指向的文件对象
Tag 不再有分支或提交指向的标签
unreachable 一般表示 Git 对象的一部分,但由于没有引用指向它们,因此被视为不可达

这里我们重点关注commit对象。

七、git show +展示信息

git show <sha>

	

根据返回的信息,判断是不是我们需要恢复的内容,根据个人经验, commit 是我们需要恢复的内容可能比较大

八、恢复

有目标的 sha key, 然后切换到 stash 的分支, 执行:

git stash apply + <sha>

	

可能会出现如下的错误:


	
fatal: '' is not a stash-like commit

解决办法:使用 merge 命令

	
# 如果有合并冲突,解决冲突
git merge +<sha>


	

在副本中已经完成,相同的操作在目标项目中重新实现一次即可。

九、小结

本文主旨在恢复删除的 git stash 存储的内容,从副本出发,结合git fsck命令获取unreachable列表,然后,根据自己的项目 使用git show 查看unreachable对象中的内容,找到目标对象,然后使用git stash apply 或者git merge 进行合并。如果这些操作符合我们的目标,在正式项目中重新演绎一次即可。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 终端
    +关注

    关注

    1

    文章

    1152

    浏览量

    29996
  • 编辑器
    +关注

    关注

    1

    文章

    806

    浏览量

    31282
  • Git
    Git
    +关注

    关注

    0

    文章

    201

    浏览量

    15814

原文标题:恢复被删除的Git stash 记录

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    git shell 常用命令

    -f a.a 强行移除修改后文件(从暂存区和工作区中删除)git diff --cached 或 $ git diff --staged 查看尚未提交的更新git
    发表于 04-16 15:57

    手机通讯记录被删除怎么办?

    恢复的数据类别,比如:通话记录恢复等。点击进入通话记录恢复,手机数据恢复精灵会自动扫描。 做完上
    发表于 03-06 14:22

    QQ聊天记录怎么恢复

    恢复精灵就会自动扫描手机里被删除的QQ聊天记录, 最后,我们勾选出系统扫描出的QQ聊天记录,选择需要恢复部分,勾选出来。等待系统帮我们
    发表于 03-09 10:49

    恢复Unix系统被删除地文件

    恢复Unix系统被删除地文件 与DOS/Windows不同,Unix文件被删除后很难恢复,这是由Unix独特的文件系统结构决定的。所以,要想恢复
    发表于 01-11 11:53 941次阅读

    苹果手机备忘录删除了怎么恢复?误删备忘录找回教程

    在左上角处的下拉框中找到“仅显示已删除”并点击,然后,从好友列表内中勾选出被删除微信聊天记录的微信好友,点击图标【恢复到电脑】就可以在电脑上查看了。
    发表于 06-15 16:23 5453次阅读

    苹果手机短信删除了怎么恢复?就用开心手机恢复大师

    在这个界面中,我们将会看到好友列表内显示两种颜色的字体。黑色代表的是未被删除的短信,黄色代表的是已经删除的短信。点击黄色好友头像,勾选出需要恢复的短信。然后,点击“恢复到电脑”,就可以
    发表于 07-08 22:59 1537次阅读
    苹果手机短信<b class='flag-5'>删除</b>了怎么<b class='flag-5'>恢复</b>?就用开心手机<b class='flag-5'>恢复</b>大师

    陌陌恢复大师:苹果陌陌聊天记录恢复教程

    在界面左侧的好友框内我们会看到有部分好友显示橘黄色,这些显示橘黄的好友就是被删除了陌陌聊天记录。然后勾选出你想恢复陌陌聊天记录,点击“恢复
    发表于 07-30 22:24 2551次阅读
    陌陌<b class='flag-5'>恢复</b>大师:苹果陌陌聊天<b class='flag-5'>记录</b><b class='flag-5'>恢复</b>教程

    苹果恢复大师告诉你:微信删除后怎么恢复聊天记录

    进入微信聊天记录界面。在界面中,我们可以看到左侧好友列表框内有显示两种不同颜色的好友,橘黄色的好友表示被删除了微信聊天记录。然后,我们需要点击橘黄色的好友头像,勾选出需要恢复的微信聊天
    发表于 08-19 23:44 2264次阅读
    苹果<b class='flag-5'>恢复</b>大师告诉你:微信<b class='flag-5'>删除</b>后怎么<b class='flag-5'>恢复</b>聊天<b class='flag-5'>记录</b>

    微信聊天记录删除了怎么办?恢复微信聊天记录

    微信聊天记录删除了还能看到吗,应该如何恢复?我们疆场会不小心将微信上的记录给清空了,一般只要删除了聊天窗口,我们就看不到
    发表于 08-03 16:51 3522次阅读

    你会在Linux系统中恢复被删除文件?

    当用户意外地删除了一个仍然需要的文件时,大多数情况下,是没有简便的方法可以重新找回或重建这个文件。不过,幸运的是文件是可以通过一些方法恢复的。当用户删除了一个文件,该文件并没有消失,只是被隐藏了一段时间。
    发表于 05-13 09:26 1441次阅读

    如何彻底删除微信聊天记录

    怎么彻底删除微信聊天记录不被恢复?方法不在多而在精!
    的头像 发表于 08-26 16:44 6551次阅读

    数据库数据恢复-数据库文件被删除/分区被格式化的SQL SERVER数据恢复方案

    数据库数据恢复-数据库文件被删除/分区被格式化的SQL SERVER数据恢复方案
    的头像 发表于 09-21 14:34 895次阅读

    如何在 Git恢复隐藏的修改记录

    git stashgit stash pop 这样的命令是用来搁置(藏匿)和恢复我们工作目录中的变化的。在本教程中,我们将学习如何
    的头像 发表于 10-09 14:09 1073次阅读

    服务器数据恢复—存储中卷被删除后重建如何恢复被删除卷的数据?

    服务器存储数据恢复环境: 某品牌FlexStorage P5730服务器存储,存储中有一组由24块硬盘组建的RAID5阵列,包括1块热备硬盘。 服务器存储故障: 存储中的2个卷被删除删除之后重建了一个新卷。需要
    的头像 发表于 06-05 11:03 730次阅读

    NetApp数据恢复—NetApp存储误删除的数据恢复案例

    某公司一台NetApp存储,该存储中有24块磁盘。 工作人员误删除了NetApp存储中一个文件夹,文件夹中有非常重要的数据。 数据恢复工程师在现场对该存储进行了初检。虽然这个文件夹被删除很长时间,但是根据NetApp存储中的
    的头像 发表于 08-12 13:35 323次阅读
    NetApp数据<b class='flag-5'>恢复</b>—NetApp存储误<b class='flag-5'>删除</b>的数据<b class='flag-5'>恢复</b>案例