全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-11 7 分钟 ✍️ juanwangdev

Three-Way Merge 三方合并

Three-Way Merge(三方合并)当两个分支都有新提交时,Git 使用共同祖先作为基准进行合并。

什么是三方合并

当两个分支都从分叉点有新提交时,Git 使用三个版本进行合并:

  1. 共同祖先(Base):两分支的分叉点
  2. 当前分支(ours):目标分支的最新提交
  3. 合并分支( theirs):源分支的最新提交

合并原理

Bash
        A(共同祖先)
       ↙ ↘
      B   C
      ↓   ↓
      D   E
       ↘ ↙
        M(合并提交)
版本角色内容
ABase共同祖先
Dours目标分支提交
Etheirs源分支提交
MResult合并结果

三方合并过程

Bash
# 合并流程
git checkout main
git merge feature

# 当无法快进时,Git 自动使用三方合并
Auto-merging src/main.go
CONFLICT (content): Merge conflict in src/main.go
Automatic merge failed; fix conflicts and then commit the result.

合并策略

Git 对不同文件采用不同策略:

策略条件结果
快进合并目标分支无变更直接移动指针
自动合并修改不同部分自动合并成功
冲突合并修改相同部分需手动解决

自动合并规则

Bash
Base 版本:
line1: 原内容A

ours 版本:
line1: 修改为B(其他行不变)

 theirs 版本:
line1: 原内容A(未修改)
line2: 新增内容C

合并结果:
line1: 修改为B(采纳 ours)
line2: 新增内容C(采纳 theirs)

手动解决冲突

text
# 冲突文件内容
<<<<<<< HEAD
当前分支的内容(ours)
=======
合并分支的内容( theirs)
>>>>>>> feature

# 解决方法
# 1. 编辑文件,选择正确内容
# 2. 删除冲突标记
# 3. git add <file>
# 4. git commit

合并提交特点

  • 有两个父提交
  • 记录合并来源
  • 保留分支历史
text
# 查看合并提交的父提交
git log --parents -1
# commit M (parent1: D, parent2: E)

三方合并是 Git 合并的核心算法,理解它有助于解决复杂的合并冲突。

要点总结

  1. 三方合并使用三个版本:Base、ours、 theirs
  2. 共同祖先作为合并基准
  3. 不同部分自动合并,相同部分产生冲突
  4. 合并提交有两个父提交
  5. 冲突需手动编辑文件解决

📝 发现内容有误?点击此处直接编辑

← 上一篇 Git 分支完全指南:从入门到精通
下一篇 → git cherry-pick 挑选提交
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库