git reset --soft 用于撤销指定提交但保留工作区和暂存区变更,使代码仍处于已暂存状态,可直接重新提交或修改;如刚提交发现漏文件或提交信息错误,执行 git reset --soft HEAD~1 即可撤回提交动作。

git reset --soft 用于撤销最近一次(或指定)提交,但保留工作区和暂存区的全部变更 —— 提交被撤回,代码仍处于已暂存(staged)状态,可直接重新提交或修改后再提交。
适用场景:刚提交完,发现漏了文件、提交信息写错,或想把多次小提交合并成一个
比如你执行了 git commit -m "add login form",但马上意识到还该加上 CSS 文件,又不想多一条“fix: add styles”提交。这时用 --soft 最合适 —— 撤掉提交动作,但所有改动依然在暂存区,只需补加文件再提交即可。
基本用法:撤销最近一次提交
运行以下命令:
git reset --soft HEAD~1说明:
-
HEAD~1表示上一个提交(即倒数第一个),也可写成HEAD^ - --soft 不影响暂存区(index)和工作区(working directory)
- git log 看不到最后一次提交,但
git status显示所有变更仍为 “Changes to be committed”
撤销更早的提交或指定某次提交
若要撤销到某次特定提交(例如 abc1234),用:
注意:
- HEAD 和当前分支指针回退到它上面
- reflog 找回)
撤销后常见操作
执行 --soft 重置后,通常接着做这几件事:
- git commit --amend -m "new message"
- git add style.css,再
git commit --amend - git reset --mixed HEAD(即默认模式)清空暂存区,或
git restore --staged .取消暂存 - git log 确认提交已消失,
git status确认文件仍在暂存区


















