当使用 git stash pop 应用并删除某个存储(stash)后,如果想撤销该操作(即恢复工作目录到 pop 前的状态,并重新将存储放回存储栈),可以按以下步骤操作:

1 强制丢弃所有未提交的更改(包括通过 stash pop 应用的更改)

git reset --hard HEAD

  • 注意‌:此操作会彻底清除工作目录和暂存区的修改,确保没有其他未保存的重要变更.
2 找回被删除的存储

当执行 git stash pop 时,Git 会从存储栈中删除该存储。若想重新将其放回存储栈,需找到该存储的哈希值

  • 方法一:
  • 通过 git reflog 查找‌
    查看 Git 操作历史:
    git reflog
  • 找到 stash pop 操作前的哈希值(如 def5678),然后重新创建存储:
    git stash store def5678
  • 方法二:直接通过存储索引(仅限未清理的存储栈)‌
  • 如果存储未被完全清理,可能仍存在于存储列表中:
    git stash list # 确认存储是否还存在(若不存在则用方法一)
    `
3. 重新应用存储(可选)‌
  • 如果希望重新应用该存储但保留在存储栈中(避免再次被 pop 删除):
    git stash apply stash # 应用最近的存储但不删除它
关键命令总结‌
1. 重置工作目录	git reset --hard HEAD	丢弃所有未提交的更改
2. 查找存储哈希值	git reflog	定位被删除的存储
3. 恢复存储到栈中	git stash store <commit-id>	将存储重新加入存储列表
注意事项‌
数据丢失风险‌:git reset --hard 会彻底清除未提交的修改,操作前确保已备份必要代码。
存储有效期‌:Git 会定期清理旧存储,若存储已被 GC(垃圾回收)清除,则无法恢复。
预防措施‌:建议优先使用 git stash apply(应用但不删除存储)而非 pop,避免误删存储。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐