git撤回commit

最常见的几种撤回方式

目标 使用命令 是否保留修改
撤回最后一次 commit,但保留代码修改 git reset --soft HEAD~1 ✅ 保留
撤回最后一次 commit,并丢弃修改 git reset --hard HEAD~1 ❌ 丢弃
撤回某个 commit,但保留后续提交 git revert <commit-id> ✅ 保留历史
删除最近 N 次 commit git reset --hard HEAD~N ❌ 丢弃

常用示例

1. 撤回最近一次提交,保留代码改动

复制代码
git reset --soft HEAD~1

回到 git commit 之前,代码还是改过的,可以重新提交。


2. 撤回最近一次提交,并清空代码改动

复制代码
git reset --hard HEAD~1

⚠️ 不可恢复! 会丢掉本地改动!


3. 撤回一个老的提交(保留后续提交)

复制代码
git log         # 找到 commit-id
git revert abc123

生成一个"反向提交"来撤回 abc123,但不会影响后续提交,适用于已 push 的提交


❗注意事项

  • reset 适用于本地分支,不要对已 push 到远程的提交用 --hard,会让别人历史错乱

  • revert 安全用于任何场景,推荐撤回远程 commit。


快速撤销 push 的提交(远程误提交)

复制代码
git reset --hard HEAD~1
git push origin HEAD --force  # ⚠️ 谨慎使用,确保无人依赖