# Git 如何撤销最后一次 commit

URL: https://caijiao.org/how-to/git/undo-last-commit
Source: docs/how-to/git/undo-last-commit.md
Description: Git 如何撤销最后一次 commit：未推送时用 git reset，已推送到共享分支时优先用 git revert，避免破坏协作历史。

## 快速答案

最后一次 commit 还没推送时，保留改动可以用：

```bash
git reset --soft HEAD~1
```

如果已经推送到共享分支，更稳妥的是：

```bash
git revert HEAD
```

## 怎么选

- 未推送：可以用 `git reset --soft HEAD~1`。
- 已推送但只有自己使用：谨慎 reset 后再推送。
- 已推送到共享分支：优先 `git revert HEAD`。

## 常见坑

- `git reset --hard HEAD~1` 会丢弃工作区改动，执行前要确认没有未保存内容。
- reset 会改写历史，团队分支上不要随意强推。
- revert 不会删除原提交，而是新增一个反向提交。

## 相关内容

- [Git 常见问题](/how-to/git/)
- [git reset 参考](/reference/git/reset)
- [git revert 参考](/reference/git/revert)
- [Git 教程：撤销操作](/git/history/undo)
