git rebase的常用场景: 交互式变基, 变基和本地分支基于远端分支的变基

作用

  • 使git的提交记录变得更加简洁

应用场景

场景一:交互式变基(合并同一条线上的提交记录) —— git rebase -i HEAD~2

  • 对象:版本库中的本地分支

  • git rebase -i HEAD~2 #将head标签当前最近的2次提交合并成一个提交,如下图所示:

  • 注意要合并的提交里面不能包含已经上传到远端仓库的提交,如图中远端仓库的最新提交一直处于"第一天提交的位置"
    在这里插入图片描述

  • 为啥叫交互式?

    • 之所以被称为交互式变基(interactive rebase),是因为这个命令让用户可以以交互方式控制变基过程中要如何处理每个提交。当你使用 -i 参数时,Git 会打开一个文本编辑器,列出你指定的提交历史,并允许你对这些提交进行各种操作。
  • 注意:再次强调:要合并的提交里面不能包含已经上传到远端仓库的提交;
    在这里插入图片描述

git rebase -i HEAD~2 #将head标签当前最近的2次提交合并成一个提交

在这里插入图片描述

  • 编辑合并过后提交的commit message
    在这里插入图片描述
git log #查看提交记录

在这里插入图片描述

场景二:变基(合并分支) —— git rebase [其他分支名称]

  • 对象:版本库中的本地分支
  • 1.切换到当前分支
  • 2.git rebase [其他分支名称]
  • 3.就会将当前分支的提交应用到其他分支的最新提交上
    • 注意:1.最终被修改的还是当前分支; 2.应用到其他分支的提交为当前分支跟其他分支共同祖先的后续提交;
    • 例如下图
    • 主线和分支一的共同祖先是”第二天提交“
    • 在分支一使用git rebase 主线以后,会将"第三天提交"应用到主线的最新提交上面,即第四天后面;
    • 最后将结果保存在分支一上面,主线分支不变;

在这里插入图片描述

场景三:本地分支与远端分支的变基

  • 对象:版本库中的本地分支和远端分支
  • 本质相当于把远端的分支拉取到版本库中,然后使用git rebase 远端分支:基于当前head所在分支,变基到本地版本库中的远端分支标签所在的分支
# 本地分支:master
git fetch origin dev # 拉取远端dev分支到本地版本库
# git log --oneline --graph --all 可以通过该命令产看版本库中origin/dev的支线状态
git rebase origin/dev # 将master分支上的提交应用到origin/dev的最新提交上面
  • 初始状态
    在这里插入图片描述
  • 执行git fetch origin master # 拉取远端dev分支到本地版本库
    在这里插入图片描述
  • 执行git rebase origin/master
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值