git高级浅入之rebase与merge差异

目录

  • rebase的几个操作

  • rebase与merge的比较和实际操作

  • 结合动图加深理解rebase

 

1.rebase的几个操作

  • git rebase [分支名]
  • git rebase –continue 继续rebase
  • git rebase –abort 放弃本次rebase

 

2.rebase与merge的比较和实际操作

相比较于git merge,我们在初级篇已经学习过merge操作,每次使用merge合并分支时候,会将两个分支又合到一条分支上,这样造成的问题就是在一个git分支树上好多交叉,如果你希望commit的时候不要出现分支,可以使用rebase替代
我们新建一个git项目,然后创建一个空的test.js文件并commit,这时候的分支图是这样的
《git高级浅入之rebase与merge差异》
接下来我们在master分支修改test.js文件并commit,然后创建一个分支branch1,并在branch1上修改test.js文件,并提交。然后我们看下分支图
《git高级浅入之rebase与merge差异》

如果这时候我们在master分支合并branch1的话

git checkout master
git merge branch1

《git高级浅入之rebase与merge差异》

打叉了!打叉了!打叉了!
ok,我们回退到上一个版本,回退后分支是这样的
《git高级浅入之rebase与merge差异》

试下使用rebase的效果,进行如下操作

git checkout branch1
git rebase master

《git高级浅入之rebase与merge差异》
报了个错,说rebase的时候有冲突,那么我们vim test.js冲突的地方修复,然后执行下面

git add .
git rebase --continue // 继续rebase (同时普及一下另外一个git rebase --abort 放弃本次rebase)

这个时候分支是这样的:
《git高级浅入之rebase与merge差异》

然后我们回到master,去merge branch1(这样的目的是因为能从上图看到,master所指向的位置靠后了,要将其更新到最前面)

git checkout master
git merge branch1

《git高级浅入之rebase与merge差异》

 

3.结合动图加深理解rebase

git merge branch1

《git高级浅入之rebase与merge差异》

git checkout branch1
git rebase master

《git高级浅入之rebase与merge差异》

git checkout master
git merge branch1

《git高级浅入之rebase与merge差异》
为什么需要再branch1上rebase而不是在master上直接rebase?看下图
《git高级浅入之rebase与merge差异》

总结

其实就从字面意思来理解在branch1上git rebase master就是说把branch1的基准重新定位到master分支指向的最新一次commit处,

点赞