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 # ⚠️ 谨慎使用,确保无人依赖