# Git 如何合并多个 commit

URL: https://caijiao.org/how-to/git/squash-commits
Source: docs/how-to/git/squash-commits.md
Description: Git 如何合并多个 commit：本地分支可用 git rebase -i，把后续提交改成 squash 或 fixup，推送前整理历史更安全。

## 快速答案

合并最近 3 个提交：

```bash
git rebase -i HEAD~3
```

在打开的列表里保留第一个 `pick`，把后续提交改成 `squash` 或 `fixup`。

## squash 和 fixup

| 命令 | 说明 |
| --- | --- |
| `squash` | 合并提交，并允许编辑合并后的 message |
| `fixup` | 合并提交，并丢弃该提交的 message |

## 使用建议

- 合并提交最好在推送前完成。
- 如果分支已经被别人基于其开发，不要随意改写历史。
- 合并后运行测试，确认整理历史没有引入冲突错误。

## 常见坑

- `HEAD~3` 表示最近 3 个提交，数字选错会漏掉或包含多余提交。
- rebase 冲突后要 `git add` 再 `git rebase --continue`。
- rebase 后推送远程可能需要 `--force-with-lease`。

## 相关内容

- [Git 常见问题](/how-to/git/)
- [git rebase 参考](/reference/git/rebase)
- [Git 冲突怎么解决](/how-to/git/resolve-conflict)
- [Git 教程：rebase](/git/branch/rebase)
