德华

V1

2023/01/31阅读:14主题:灵动蓝

【learnGitBranching】05高级操作

GitHub最受欢迎的交互式Git学习教程

  • 在线学习地址:https://pcottle.github.io/learnGitBranching/
  • 仓库地址:https://github.com/pcottle/learnGitBranching

多分支 rebase

练习

  • 我们准备了很多分支!咱们把这些分支 rebase 到 main 上吧。
  • 你的领导给你提了点要求 —— 他们希望得到有序的提交历史,也就是我们最终的结果应该是 C6'C7' 上面, C5'C6' 上面,依此类推。

——本关不允许使用cherry-pick

git rebase main bugFix
git rebase bugFix side
git rebase side another
git branch -f main 
5-1
5-1

两个父节点

教学

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

演示

5-2
5-2
  • 操作符支持链式操作
5-3
5-3

练习

在指定的目标位置创建一个新的分支,要求你使用刚刚讲到的相对引用修饰符

git checkout HEAD^^2~
git branch bugWork
git checkout main

#
 或者一句解决
git branch bugWork HEAD~^2^
5-4
5-4

纠缠不清的分支

练习

  • 现在我们的 main 分支是比 onetwothree 要多几个提交。出于某种原因,我们需要把 main 分支上最近的几次提交做不同的调整后,分别添加到各个的分支上。

  • one 需要重新排序并删除 C5two 仅需要重排排序,而 three 只需要提交一次。

# 强制移动分支指针到指定位置
git branch -f three HEAD~3
git branch -f one HEAD
git branch -f two HEAD
# 拖动修改one分支
git checkout one
git rebase -i HEAD~4  # 修改成指定样子
# 拖动修改two分支
git checkout one
git rebase -i HEAD~4  # 修改成指定样子
5-5
5-5

标准答案:使用cherry-pick

git checkout one
git cherry-pick c4 c3 c2
git checkout two
git cherry-pick c5 c4 c3 c2
git branch -f three c2

分类:

阅读

标签:

开源

作者介绍

德华
V1