本文最后更新于47 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
1. 初始状态分析
- 当前分支:
main
分支(main*
表示当前所在分支),指向c5
。 - 提交历史:线性结构
c0 → c1 → c2 → c3 → c4 → c5
,另有标签overHere
指向c1
。 - 目标结构:
- 需对
main
分支执行交互式变基,保留c3'
、c5'
、c4'
提交('
表示调整后的新提交); - 最终
main
分支基于overHere
(c1
)重新排列提交,形成c0 → c1 → c3' → c5' → c4'
。
- 需对
2. 核心概念:交互式变基(git rebase -i
)
- 作用:在变基过程中,手动编辑提交历史(如删除、合并、重排、修改提交说明),让历史更简洁或符合规范。
- 流程:
- 执行
git rebase -i <目标提交>
,进入交互界面。 - 通过编辑指令(
pick
/reword
/squash
/drop
等)调整提交。(沙盒中通过鼠标拖动调整顺序,点击删除) - 保存退出后,Git 按指令重写提交历史。
- 执行
3. 通关步骤(分阶段执行)
阶段 1:启动交互式变基
目标是将 main
分支的提交 “重新嫁接” 到 overHere
(c1
),所以选择 c1
作为变基目标。
执行命令:
bash
git rebase -i HEAD~4
- 作用:
- Git 会列出(
c2
、c3
、c4
、c5
)。
- Git 会列出(
点击删除c2
,拖动调整顺序c3->c5->c6
阶段 4:完成变基,匹配目标结构
执行完交互式变基后,main
分支的提交历史会变为: c0 → c1 → c3' → c5' → c4'
此时,main
分支结构与右侧目标完全匹配,关卡自动通关。
简单说,这关的核心是 “用 git rebase -i
手动编辑提交历史”,掌握交互式变基的指令,实现提交的删除、重排,让分支历史更简洁规范 。