git rebase 用来改变一串提交,以什么为基础的问题
其实际的意义就是为了保持正在开发的分支中的提交,相对于另一个分支代码,是最新的
现在有两个分支,topic分支是基于master中的B提交点独立出来的,如果我现在想要让topic的分支基点变为E,就可以使用
git checkout topic
git rebase master
或者
git rebase master topic
如果要把feature分支,移到master的E节点时
git rebse --onto master maint^ feature
如果过程中存在冲突问题,rebase会临时挂起,等你解决完冲突后,使用
git rebase --continue
进行接下的操作,如果觉得冲突没有修改必要,可以git rebase --skip
,如果过程中后悔了,则git rebse --abort
终止操作
接下来说说git rebase -i
有时候,我们会存在,想修改提交的顺序,或者删除某个提交之类的操作时,rebase -i
就派上用了
//master~3就是一个范围
git rebase -i master~3
执行上面的语句会得到,下面类似的内容
pick aced9f3 远程2
pick 532a39d 远程3
pick 852da65 rebse
可以在vim中,更改这三行的数据的先后顺序,来实现提交的先后顺序,比如
pick 852da65 rebse
pick aced9f3 远程2
pick 532a39d 远程3
使用:wq
保存退出
如果想要实现某两个提交节点,合二为一
pick 852da65 rebse
squash aced9f3 远程2
pick 532a39d 远程3
第二个提交节点会合并到第一个提交中去
这个其实可以运用到开发的场景中,我们时常存在提交代码的时候,与远程代码库存在冲突,在merge之后会生成一个merge的提交点,如果你是强迫症患者,肯定是不允许的,这个时候你使用rebase就能解决你的烦恼了。
更多技术相关的和话题请关注公众微信号【APPZone】
私下交流请关注的新浪微博@迹_Jason