git高级浅入之rebase与merge差异
目录
rebase的几个操作
rebase与merge的比较和实际操作
结合动图加深理解rebase
1.rebase的几个操作
- git rebase [分支名]
- git rebase --continue 继续rebase
- git rebase --abort 放弃本次rebase
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
2.rebase与merge的比较和实际操作
相比较于git merge,我们在初级篇已经学习过merge操作,每次使用merge合并分支时候,会将两个分支又合到一条分支上,这样造成的问题就是在一个git分支树上好多交叉,如果你希望commit的时候不要出现分支,可以使用rebase替代
我们新建一个git项目,然后创建一个空的test.js文件并commit,这时候的分支图是这样的
接下来我们在master分支修改test.js文件并commit,然后创建一个分支branch1,并在branch1上修改test.js文件,并提交。然后我们看下分支图
如果这时候我们在master分支合并branch1的话
git checkout master
git merge branch1
打叉了!打叉了!打叉了!
ok,我们回退到上一个版本,回退后分支是这样的
试下使用rebase的效果,进行如下操作
git checkout branch1
git rebase master
报了个错,说rebase的时候有冲突,那么我们vim test.js冲突的地方修复,然后执行下面
git add .
git rebase --continue // 继续rebase (同时普及一下另外一个git rebase --abort 放弃本次rebase)
然后我们回到master,去merge branch1(这样的目的是因为能从上图看到,master所指向的位置靠后了,要将其更新到最前面)
git checkout master
git merge branch1
3.结合动图加深理解rebase
git merge branch1
git checkout branch1
git rebase master
git checkout master
git merge branch1
为什么需要再branch1上rebase而不是在master上直接rebase?看下图
总结
其实就从字面意思来理解在branch1上git rebase master就是说把branch1的基准重新定位到master分支指向的最新一次commit处,

更多精彩