git reset --soft HEAD~1 回退到上一个提交 '撤销最近一次 commit,代码改动保留,改动仍在暂存区(staged)'
如果你说的“摘到前一次提交”,常见有几种情况:
1. 回退到上一个提交(保留代码修改)
git reset --soft HEAD~1
效果:
- 撤销最近一次 commit
- 代码改动保留
- 改动仍在暂存区(staged)
例如:
A -> B -> C (HEAD)
执行后:
A -> B (HEAD)
但 C 的代码修改还在。
2. 回退到上一个提交(保留代码,不保留暂存状态)
git reset HEAD~1
或
git reset --mixed HEAD~1
效果:
- 删除最近一次 commit
- 代码改动保留
- 改动变成未暂存(unstaged)
3. 回退到上一个提交(代码也不要)
⚠️ 慎用
git reset --hard HEAD~1
效果:
A -> B -> C (HEAD)
变成:
A -> B (HEAD)
并且 C 的代码修改全部丢失。
4. 查看前一次提交
查看最近提交:
git log --oneline -n 2
例如:
8d3fa12 fix rdma issue
6a1c221 add rdma support
查看前一个提交内容:
git show HEAD~1
或者:
git checkout HEAD~1
进入该提交(Detached HEAD)。
返回当前分支:
git checkout main
或
git checkout feature
5. 从前一个提交创建新分支
有时想基于前一个提交调试:
git checkout -b debug_branch HEAD~1
6. 已经 push 到远程怎么办?
如果最近一次提交已经 push:
git reset --soft HEAD~1
之后需要强制更新远程:
git push --force-with-lease
推荐使用:
git push --force-with-lease
不要直接:
git push --force
常用场景
刚提交发现 commit message 或内容有问题:
git reset --soft HEAD~1
# 修改内容
git commit -m "new message"
或者更简单:
git commit --amend
修改最近一次提交,而不用 reset。
Time is like a fleeting show!
posted on 2026-09-26 12:55 ENGINEER-F 阅读(8) 评论(0) 收藏 举报
浙公网安备 33010602011771号