用 git reset --soft head^ 可撤销未 push 的上一次 commit 并保留修改;webstorm 中需在 git log 右键选 soft 模式重置,误选 hard 会丢代码,可用 git reflog 恢复。

没 push 的本地 commit,直接用 git reset --soft HEAD^ 就行,WebStorm 里点几下也能完成,但要注意模式选错会丢代码。
撤销上一次未 push 的 commit(保留修改)
这是最常见也最安全的场景:你刚 commit 完,还没 push,发现提交了不该提交的文件,或者想改提交信息。目标是把 HEAD 撤回上一个版本,但让工作区和暂存区保持原样。
- 推荐用 WebStorm 的图形操作:打开
Git → Log,右键最新那条提交 →Reset Current Branch to Here→ 选Soft模式 → 点Reset - 命令行等效操作:
git reset --soft HEAD^(HEAD^表示上一次提交;HEAD~1效果一样) -
Soft模式不会动你的代码,只是把HEAD指针移回去,之前git add过的文件仍处于暂存状态,可直接改完再commit - 别手抖选
Hard—— 那会清空暂存区和工作区,刚写的代码就真没了
撤销多次未 push 的 commit(只丢提交,不丢代码)
比如你连着 commit 了三次,全都没 push,现在想一口气撤回到第一次提交之后的状态。关键不是“删几次”,而是“退到哪”。
- 在
Git Log里找到你想退回的目标提交(比如第三次commit的前一个),右键 →Reset Current Branch to Here→Mixed模式 -
Mixed会把HEAD和暂存区都重置,但工作区保留所有修改 —— 所有被撤销的提交里的变更都会变成未暂存的改动,你可以重新挑着add和commit - 命令行写法:
git reset --mixed HEAD~3(退三步)或git reset HEAD~3(--mixed是默认值) - 如果误选
Hard,又没备份,可以用git reflog找到被删掉的commitID 再reset回去,但别指望 WebStorm 的 UI 能帮你自动捞回来
WebStorm 里点错了 Reset 模式,怎么补救
点了 Hard 后发现代码没了,但其实 Git 还没彻底删掉那些对象,只要没执行 git gc,通常还有 30 天窗口期可恢复。
- 立刻打开终端,运行:
git reflog,找到出事前的commitID(比如abc1234) - 执行:
git reset --hard abc1234,就能还原回来 - WebStorm 的
Log面板默认不显示reflog,所以这一步必须切终端;UI 里没有“撤销 Reset”的按钮 - 如果你已经关了项目、清了缓存,或者过了 reflog 有效期,那就只能靠本地历史(
Local History右键文件 →Local History → Show History)捞最近的自动快照 —— 但这不是 Git 提交,只是 IDE 的临时记录
真正容易被忽略的点是:WebStorm 的 Undo Commit 功能(右键提交记录 → Undo Commit)其实只适用于单次提交且未 push 的情况,底层调的还是 --soft,它不支持多步回退,也不提示你当前分支是否已 push。所以别迷信那个菜单项,看清日志、确认状态、再动手。











