git stash Pop 后丢失,要如何找回?

疑难杂症   2024-06-26 11:11   234   0  

须知

写在前面:我们都知道 stash list 中如果 pop 出来一条,那 list 里就会少一条,但其实使用 git stash pop 并没有真正地将该条 stash 删掉的,而是删除引用而已,因此当我们误 pop 时,我们可以使用 git fsck 命令进行找回~

背景描述

在一次工作中,我不小心误操作,把本地存好的 stash pop 出来后,又 revert 掉了,当时没反应过来,反应过来后顿觉天昏地暗,里面有前一天和当天上午的代码,改的是响应式的调整,要是没了岂不是都白做了… 虽然之前还没找回过丢失的 stash,但我要求自己冷静,大脑飞速运转,想了下觉得 git 其实应该很智能,哪怕 stash list 里没有了,也不会真的删除,于是我开始上网查和问同事,网上确实有相关的帖子告知如何找回,于是开始按帖子尝试!

解决过程

  1. 通过
git fsck --unreachable  // 该命令查找所有 unreachable 记录

git fsck --lost-found

两条命令其中的一条来进行查询,这里我使用的是 git fsck – lost -found,
查询出结果如下:
在这里插入图片描述

然后通过 git show+[SHA] 一条一条的对commit的记录进行查看,SHA 对应的就是 commit Id,即每条 commit 后的那一串字母与数字的组合
在这里插入图片描述

注意
这里的 commit 是无序的,你也不知道你丢失的那条 stash 的 commitId 是啥,所以只能一条一条 git show commitId 去查看!

show 出来的内容顶部会有提交的时间,stash 名称和提交的文件内容,直接都展示出来,如何快速地查找记录?我因为清楚地知道我这条 stash 是啥时候加的,所以一看时间和名称不是,就直接下一个了。

当你查看到时你丢失的那条记录时,拿着这条 commitId,进行 git statsh apply commitId 的操作,就可以在本地找回丢失的这条 stash。

记录一下,希望能帮到更多的人,以后自己再遇到也知道怎么做了~

遇事千万不能慌啊~

参考连接:

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。
闲言碎语
其实很多时候我们都在做着同一件事情,造旧轮子。但是如果你善于总结的话,善于搬轮子的话,你可以把大部分的时间控制在造新轮子。因此为什么那么多人进步不了,是因为他们一直造旧轮子却自我安慰。
赞赏支持

如果觉得博客文章对您有帮助,异或土豪有钱任性,可以通过以下扫码向我捐助。也可以动动手指,帮我分享和传播。您的肯定,是我不懈努力的动力!感谢各位亲~