文章导航
git的高级话题
多分支 rebase
练习
- 我们准备了很多分支!咱们把这些分支 rebase 到 main 上吧。
- 你的领导给你提了点要求 —— 他们希望得到有序的提交历史,也就是我们最终的结果应该是
C6'
在C7'
上面,C5'
在C6'
上面,依此类推。
——本关不允许使用cherry-pick
1 | git rebase main bugFix |

两个父节点
教学
- 操作符
^
与~
符一样,后面也可以跟一个数字。 - 作用是指定合并提交记录的某个父提交
- Git 默认选择合并提交的“第一个”父提交
- 添加数字可以选择切换到第几个父提交上
演示

- 操作符支持链式操作

练习
在指定的目标位置创建一个新的分支,要求你使用刚刚讲到的相对引用修饰符
1 | git checkout HEAD^^2~ |

纠缠不清的分支
练习
现在我们的
main
分支是比one
、two
和three
要多几个提交。出于某种原因,我们需要把main
分支上最近的几次提交做不同的调整后,分别添加到各个的分支上。one
需要重新排序并删除C5
,two
仅需要重排排序,而three
只需要提交一次。
1 | 强制移动分支指针到指定位置 |

标准答案:使用cherry-pick
1 | git checkout one |