You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何撤销意外执行的git stash pop并恢复原stash消息?

如何查看和找回Git Stash的自定义消息

我完全懂你的痛点——那些存在stash消息里的进度说明、暂存原因,对衔接后续工作来说真的太关键了。结合你的需求,分两种场景给你实用的解决方案:

一、查看未被pop的Stash消息

要快速查看所有已保存的stash及其自定义消息,直接运行这条命令就行:

git stash list

它的输出会是这样的格式,冒号后面就是你当初用git stash save设置的消息:

stash@{0}: On feature/payment: 完成支付接口参数校验,待联调
stash@{1}: On develop: 临时添加性能监控埋点,测试后移除

二、找回已pop的Stash消息及内容

你说git stash pop不会出现在reflog里,但其实stash本质是一个Git提交对象,只要还没执行过git gc这类清理垃圾对象的操作,就能把它找回来:

  1. 先找出所有悬空的提交对象(被pop的stash就属于这类):
git fsck --no-reflog | grep "dangling commit"
  1. 对每个查到的提交哈希,用git show查看详情,里面会包含你设置的stash消息:
git show <查到的提交哈希>

在输出的开头就能看到熟悉的消息:

commit 8a7b6c5d4e3f2a1b2c3d4e5f6a7b8c9d0a1b2c3d
Merge: 123abc 456def
Author: 你的名字 <你的邮箱>
Date:   Thu Oct 12 10:15:00 2023 +0800

    On feature/payment: 完成支付接口参数校验,待联调
  1. 如果确认是你要找的stash,还能把它恢复回来:
git stash apply <查到的提交哈希>

最后给个小建议:现在Git更推荐用git stash push -m "你的消息"替代git stash save,功能完全一致,但属于更现代的用法,后续管理起来体验也没差别。

内容的提问来源于stack exchange,提问作者Kalle Richter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:52:38