# 使用 reset 与 revert

URL: https://caijiao.org/git/history/reset-revert
Source: docs/git/history/reset-revert.md
Description: 本章详细介绍 Git 中 'reset' 和 'revert' 命令的区别和用法，帮助理解如何安全地撤销提交和修改历史。

`reset` 和 `revert` 都是撤销提交的命令，但用途和影响不同。

## git reset

`reset` 会移动当前分支的指针，改变提交历史。

- `--soft`：只移动指针，保留暂存区和工作区改动。
- `--mixed`（默认）：移动指针，取消暂存但保留工作区改动。
- `--hard`：移动指针，删除暂存区和工作区的改动。

示例：

```bash
git reset --hard HEAD~1
```

将当前分支回退一个提交，删除改动。

⚠️ 不推荐在公共分支对外推送的提交使用，以免破坏协作。

## git revert

`revert` 是生成一个新的提交，撤销指定提交的改动，不修改历史。

示例：

```bash
git revert <提交哈希>
```

适用于公共分支，安全撤销已发布的提交。

## 总结

- `reset`：改写历史，适合本地私有分支。
- `revert`：安全撤销，适合公共分支。

合理选择命令，保障版本管理安全与协作顺畅。
