Merge 保留完整历史,适合公共分支;Rebase 重写历史,适合本地分支整理。黄金法则:不要对已推送的公共分支执行 rebase。
Merge vs Rebase
| 特性 | Merge | Rebase |
|---|---|---|
| 历史 | 保留分支历史,生成合并提交 | 重写历史,形成直线 |
| 安全性 | 安全,不改变已有历史 | 有风险,改变提交 ID |
| 冲突 | 一次性解决 | 每个提交都可能需解决 |
| 适用 | 公共分支 | 本地/特性分支 |
注意事项
不要在 PR 前 merge 主分支:
- 污染个人分支历史
- 增加最终 rebase 难度
- 不利于代码审查
最佳实践
# 同步主分支最新代码(用 rebase 代替 merge)
git fetch origin
git rebase origin/master
# PR 前压缩提交
git rebase -i HEAD~3
# 只对本地未推送的提交执行 rebase