Git rebase 实战

发过程中一般对git merge命令用的比较多,这里特意记录下git rebase的使用。

git rebase即变基,用于分支合并。它与git merge的区别是:

  • git merge 对两个分叉的分支合并后,会产生一次新的提交,并且多个分支的历史记录都会得到保存
  • git rebase 对两个分叉的分支合并后,历史记录是一条直线,会显得更为整洁
实战

前置条件: 如图所示, 当前从master分支拉出了dev和test分支,并且分别有了两次提交。
在这里插入图片描述
此时,如果把dev分支merge 到 test 分支, 如果采用 git merge 方式,执行如下命令即可:

#切换到test分支
git checkout test 

# 将dev分支合并到test
git merge dev

如果采用git rebase方式,应该进行如下操作:

git checkout test

git rebase dev

其基本流程如下:

  1. 找到 test 分支和 dev分支的共同祖先C0
  2. 将C3, C4 的提交以补丁的形式保存起来
  3. 将当前的test分支指向目标基底C2
  4. 将C3,C4的补丁依次重放(可能会产生冲突),之后test会指向C4’

执行完4后,对应如下图所示:

在这里插入图片描述
5. 将dev和test以fast-forward方式合并

合并完成后,虚线框的提交记录已经没用了,可以执行git gc命令将其回收掉。

合并的最终结果如下图所示:

在这里插入图片描述
到此变基操作就全部完成。

另外,在执行变基的过程中,涉及到三个命令会常用到:

  • git rebase --skip 它表示丢弃当前补丁的重放,即忽略掉当前补丁
  • git rebase --abort 它表示终止正在进行的变基操作,并且恢复到最初始的状态
  • git rebase --continue 它表示继续补丁的重放,一般在解决冲突后执行该命令
总结
  • 不要对master分支进行rebase
  • 一般来说,执行rebase的分支都是本地分支,没有推送到远程仓库
  • 无论变基或三方合并,最终的合并结果是一样的,只不过提交历史不同罢了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值