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

Git stash后如何回到之前提交?误删分支后如何恢复stash到新分支?

Git 问题解答

1. 执行git stash后如何回到之前的提交?

git stash会把当前工作区、暂存区的未提交修改暂存起来,执行完这条命令后,你本身就处于执行git stash时所在的提交状态。如果需要恢复暂存的修改,有两种常用方式:

  • 恢复并删除stash记录:使用 git stash pop,这条命令会将最近一次暂存的修改应用到当前分支,同时删除该条stash记录。
  • 恢复但保留stash记录:使用 git stash apply,只会应用修改,stash记录依然保留。如果有多个stash,可先用git stash list查看所有记录,再通过git stash apply stash@{n}(n为stash的序号,从0开始)指定恢复某一条。

如果只是想切换回之前的分支(不需要恢复stash内容),直接用git checkout <原分支名>或git switch <原分支名>即可。

2. 恢复stash内容到新分支(并找回误删分支的提交)

先梳理你的操作逻辑:你在myBranch上完成提交后执行git stash(若此时工作区无新修改,stash内容为空),接着删除了分支。提交内容丢失大概率是因为删除了未合并的myBranch,导致提交变成悬空提交,而非stash的问题。以下是完整解决步骤:

步骤1:找回被删除分支的提交

  1. 执行 git reflog,查看所有本地操作记录,找到你在myBranch上那次提交的哈希值(格式类似abc123)。
  2. 基于该提交重新创建分支:
    git checkout -b myBranch <提交哈希值>
    
    这样就能恢复之前在myBranch上的提交内容。

步骤2:恢复stash中的内容(如果确实有暂存的修改)

如果确认stash中有需要恢复的内容:

  1. 切换到新创建的myBranch:
    git checkout myBranch
    
  2. 应用stash:
    • 恢复并删除stash记录:git stash pop
    • 恢复且保留stash记录:git stash apply

如果你确实要将stash内容恢复到基于dev的新分支,你之前尝试的命令是可行的,但需要确保stash中存在有效内容:

git checkout -b myBranch dev
git stash pop

如果执行后没有看到内容,说明当时执行git stash时工作区是干净的,并未暂存任何修改。


内容的提问来源于stack exchange,提问作者Alip Setiawan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:01:20