Git Internals
三方合并机制
理解 Git 如何基于 merge-base 做三方合并,有助于准确判断冲突来源、合并结果与冲突解决策略。
- 想建立稳定 Git 心智模型的学习者
- 经常遇到历史、引用、恢复问题的开发者
- 会看基础命令输出
- 知道提交、分支、HEAD 这些名词
- 只背底层术语却不连接到实际命令
- 把对象、引用、工作区混成一层理解
Git merge 的核心不是“把两边拼起来”,而是用三方输入计算结果:base、ours、theirs。
三方输入分别是什么
base:两边分支共同祖先(merge-base)ours:当前分支 tiptheirs:被合并分支 tip
Git 对比的是 “base→ours” 与 “base→theirs” 的改动差异。
合并前
main
ABC
feature
BDE
合并后
main
ABCM
feature
BDEM
为什么会冲突
当两边都修改了同一位置且结果不可自动判定时,就会触发冲突。
一个常见误解
冲突不代表 Git 不知道文件结构,而是语义选择需要人工决策。
只看 ours/theirs 容易失去上下文。理解 base 的原始状态,通常能更快判断哪侧更合理。
接下来建议继续看什么
merge-base and ancestrygit-mergererere for recurring conflicts