本文最后更新于167 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

1. 初始状态分析
- 当前分支:
main分支(main*表示当前所在分支) - 提交历史:只有 2 个基础提交
c0→c1(左侧蓝色区域) - 目标结构:
- 需要创建
bugFix分支,在bugFix上提交c2; - 切回
main分支提交c3→c4; - 最后合并
bugFix到main,形成c1分叉后合并的结构(右侧粉色区域)
- 需要创建
2. 核心命令与逻辑
git branch <分支名>:创建新分支(基于当前HEAD)。git checkout <分支名>:切换分支(移动HEAD指针)。git commit:提交代码,延伸当前分支的提交历史。git merge <分支名>:合并指定分支到当前分支(关键操作,用于整合分叉的提交)。
3. 通关步骤(分阶段执行)
阶段 1:创建 bugFix 分支并提交
- 创建
bugFix分支:bash git branch bugFix- 作用:基于当前
main分支的c1,创建新分支bugFix(此时main和bugFix都指向c1)。
- 作用:基于当前
- 切换到
bugFix分支:bash git checkout bugFix- 作用:让
HEAD指针移动到bugFix分支,后续提交会延伸bugFix的历史。
git checkout -b <分支名>(等价于git branch <分支名>+git checkout <分支名>)。 - 作用:让
- 在
bugFix上提交c2: 关卡默认模拟 “有修改待提交”,直接执行:bash git commit- 作用:
bugFix分支向前延伸,新增提交c2(结构:c0 → c1 → c2,bugFix*指向c2)。
- 作用:
阶段 2:切回 main 分支并提交
- 切换回
main分支:bash git checkout main- 作用:
HEAD指针切回main分支(此时main仍指向c1)。
- 作用:
- 在
main上提交c3: 执行:bash git commit- 作用:
main分支向前延伸,新增提交c3(结构:c0 → c1 → c3,main*指向c3)。
- 作用:
- 在
main上继续提交c4: 再次执行:bash git commit- 作用:
main分支继续延伸,新增提交c4(结构:c0 → c1 → c3 → c4,main*指向c4)。
- 作用:
阶段 3:合并 bugFix 到 main
- 合并
bugFix分支到main:确保当前在main分支(已通过git checkout main切换),执行:bash git merge bugFix- 作用:将
bugFix分支的提交(c2)合并到main分支。由于main和bugFix是 “分叉后合并” 的关系,Git 会创建一个合并提交(自动生成新节点,如c4,最终形成目标中的分叉合并结构:c1分叉为c2(bugFix)和c3(main),再合并到c4main`。
- 作用:将
4. 完成验证
执行完上述步骤后,左侧分支结构会与右侧目标完全匹配:
c0 → c1分叉为bugFix分支(c2)和main分支(c3);main分支合并bugFix后,形成整合的提交链,关卡自动通关。

5. 关键知识点延伸
- 合并的两种场景:
- “快进合并”:如果合并的分支是当前分支的直接延伸(无分叉),Git 会直接移动指针(如
main合并一个未分叉的bugFix)。 - “三方合并”:如果分支有分叉(如本关卡),Git 会创建一个新的合并提交,同时保留两个分支的历史。
- “快进合并”:如果合并的分支是当前分支的直接延伸(无分叉),Git 会直接移动指针(如
- 实际开发意义:合并用于整合不同分支的工作(如功能开发分支合并到主分支),
git merge是团队协作中整合代码的核心操作。







