Merge 创建合并提交记录历史;Rebase 重写历史形成线性记录。理解三路合并算法与重演机制是掌握 Git 协作的关键。
Merge:三路合并算法
流程:
- 找到两个分支的最近共同祖先
- 计算两个分支各自的差异
- 合并差异,处理冲突
- 创建合并提交(两个父提交)
分支图变化:
| |
Rebase:重演机制
流程:
- 找到共同祖先,提取独有提交
- 暂存差异
- 重置分支指针到目标分支
- 重新应用提交,生成新提交 ID
分支图变化:
| |
核心差异
| 方面 | Merge | Rebase |
|---|---|---|
| 合并提交 | 会创建 | 不会 |
| 冲突处理 | 一次性解决 | 每个提交都需解决 |
| 历史记录 | 分叉,真实 | 线性,简洁 |
| 安全性 | 更安全 | 有风险 |
黄金法则
- 公共分支:使用 merge,记录合并事件
- 本地/特性分支:使用 rebase,整理提交历史
- 禁止:对已推送的公共分支执行 rebase
张芷铭的个人博客
Comments