遇到的问题
## 在项目中遇到这样的一个问题
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可以实现这个功能。