rebase 和 merge 区别
2018-09-24 本文已影响19人
月肃生
百度能搜到很多类似的讲解文章,但是不自己动手操作一下的话,总是一知半解的,关于具体区别,在此不再赘述。可以参考 git merge 和 git rebase 小结。
准备
首先我们在本地建了两个分支master
和guest
。分别做了如下提交
master分支

guest分支

rebase和merge
在执行以上命令后的状态分别是
rebase

merge

总结
好像从上图而言,唯一的区别是,merge之后有一个解决冲突的提交,而rebase没有,但在rebase时,会产生两次文件冲突,但是并不需要重新提交。结合别人的文章结论,那么rebase和merge的区别就是:
- rebase会形成多次新的提交(有冲突需要逐个解决),但是并不会产生更多的提交,新的提交只是会把以前旧的提交给替换掉,这样整个提交历史看起来就像是在一个分支上一直进行的操作。
- merge会把提交合并,冲突只需要更改一次就好,但是产生的冲突需要做一个新的提交,这样提交历史会多出一次提交,这个提交就是合并解决冲突的提交。