目录

  • rebase的几个操作

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

  • 结合动图加深理解rebase

 

1.rebase的几个操作

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

 

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

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

git checkout master
git merge branch1

git高级浅入之rebase与merge差异-LMLPHP

打叉了!打叉了!打叉了!

ok,我们回退到上一个版本,回退后分支是这样的

git高级浅入之rebase与merge差异-LMLPHP

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

git checkout branch1
git rebase master

git高级浅入之rebase与merge差异-LMLPHP

报了个错,说rebase的时候有冲突,那么我们vim test.js冲突的地方修复,然后执行下面

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

这个时候分支是这样的:

git高级浅入之rebase与merge差异-LMLPHP

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

git checkout master
git merge branch1

git高级浅入之rebase与merge差异-LMLPHP

 

3.结合动图加深理解rebase

git merge branch1

git高级浅入之rebase与merge差异-LMLPHP

git checkout branch1
git rebase master

git高级浅入之rebase与merge差异-LMLPHP

git checkout master
git merge branch1

git高级浅入之rebase与merge差异-LMLPHP

为什么需要再branch1上rebase而不是在master上直接rebase?看下图

git高级浅入之rebase与merge差异-LMLPHP

总结

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

05-11 15:02