张芷铭的个人博客

Merge 保留完整历史,适合公共分支;Rebase 重写历史,适合本地分支整理。黄金法则:不要对已推送的公共分支执行 rebase。

Merge vs Rebase

特性MergeRebase
历史保留分支历史,生成合并提交重写历史,形成直线
安全性安全,不改变已有历史有风险,改变提交 ID
冲突一次性解决每个提交都可能需解决
适用公共分支本地/特性分支

注意事项

不要在 PR 前 merge 主分支

  1. 污染个人分支历史
  2. 增加最终 rebase 难度
  3. 不利于代码审查

最佳实践

1
2
3
4
5
6
7
8
# 同步主分支最新代码(用 rebase 代替 merge)
git fetch origin
git rebase origin/master

# PR 前压缩提交
git rebase -i HEAD~3

# 只对本地未推送的提交执行 rebase

参考资料

十分钟学会正确的 GitHub 工作流

[[git merge 和 rebase 的详细流程和对分支图的影响]]

Comments