5

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就能解决你的烦恼了。

weixin

更多技术相关的和话题请关注公众微信号【APPZone】
私下交流请关注的新浪微博@迹_Jason


迹_Jason
1k 声望65 粉丝

feeling主义者,追求极致的简约,创造最好的用户体验