# git revert 参考

URL: https://caijiao.org/reference/git/revert
Source: docs/reference/git/revert.md
Description: git revert Reference，整理用新提交撤销旧提交、revert 普通提交、revert merge、适用场景和常见错误。

`git revert` 会创建一个新提交，用来反向撤销指定提交带来的改动。它不改写已有历史，适合处理已经推送到远程的提交。

## 语法

```bash
git revert <commit>
```

## 示例

撤销最近一次提交：

```bash
git revert HEAD
```

撤销指定提交：

```bash
git revert abc1234
```

只生成改动，不自动提交：

```bash
git revert --no-commit abc1234
```

## reset 和 revert 怎么选

| 场景 | 推荐 |
| --- | --- |
| 本地提交未推送 | `git reset` |
| 提交已经推送到共享分支 | `git revert` |
| 要保留完整历史 | `git revert` |
| 要整理本地历史 | `git reset` 或 `git rebase -i` |

## 常见错误

- revert 后以为原提交消失了；实际上历史中会保留原提交和新的反向提交。
- revert merge commit 时没有理解主线父提交，可能需要 `-m` 参数。
- 连续 revert 多个提交时不看冲突，容易产生半完成状态。

## 相关内容

- [Git Reference](/reference/git/)
- [git reset](/reference/git/reset)
- [Git 如何撤销最后一次 commit](/how-to/git/undo-last-commit)
- [Git 教程：reset 与 revert](/git/history/reset-revert)
- [git-revert 官方文档](https://git-scm.com/docs/git-revert)
