git 中的rebase 与cherry-pick实战

遇到的问题

## 在项目中遇到这样的一个问题
  master分支包含记录:base1,test1,test2,test3,test4
  dev分支是基于master的base1后开发的,base1,dev1,dev2,dev3,现在怎么把dev1,dev2,dev3的代码同步到同主分支上?
思路有2个
1) perry-pick,打开idea,选择主分支上对应的记录,点击perry-pick,即可把对应的代码移动到分支上,
在这里插入图片描述
2)使用rebase

rebase之前可以看到

master远程分支中有test1-test4
master本地分支只有test5
test分支只有test rebase3
现在需要把主分支的test1-test4同步到本地的test分支上,可以使用如下操作,右键小乌龟工具,rebase
branch选择本地要使用的分支,Upstram选择远程的有test1-test4的分支,点击start-rebase
在这里插入图片描述
再次查看本地的test分支,发现已经把test-test4放进来了

整体效果类似于剪切了test1-test4到我们的分支之前,这样的历史记录是非常干净的。

上面操作也可以使用命令来进行
在这里插入图片描述
等价于下面idea
在这里插入图片描述

如果仅仅想取某些分支,如取当前master版本的一段提交,如倒数第4个到倒数第一个,可以写成下面

在这里插入图片描述
上面的Onto是指最终点,可以理解为from->to中的to
下面的from是起点

上面也可以使用hash值来代替
等价于命令行
git rebase --onto topicA~5 topicA~3 topicA

注意

实际测试中发现其实只有onto中的参数有用,from中的参数其实没有用
也就是说如果1,2,3,4是不能只取中间的23的这一段的,不清楚是不是bug
不过pick可以实现这个功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值