rebase
rebase将一个分支作为基线,这个基线就是当前分支的开始时间轴向后移动到最新的跟踪分支最后面,这样当前的分支就是最新的跟踪分支
merge区别
rebase会把当前分支的commit放到公共最后面,变基。,假如此时从master拉了一个feature,而提交了几个commit,这时候又有人合并到了master,这时候去rebase master,会把自己的commit放到刚才有人commit的后面
而master只会把自己的commit和别人的commit合并到一起,形成一个新的commit
注意
不要在公共分支分支使用rebase
因为往后放的commit都是新的,这样从这个分支拉出去的人,都要再rebase,相当于你rebase东西进来,就是新的commit了
123是当前分支状态,从master checkout一个prod,master提交了45,prod提交了67
master是12345 prod是12367,这是
如果再prod上rebase master,就会变成1234567
如果是merge,就会变成123678,8会把 45一起合并进来
使用场景
适用于给予某一分支一直在开发,某次想要合入,就先将master的commit rebase过来,再去提交,如果是merge,就会带上别人的提交信息
缺点是rebase完了以后,就不知道自己是从那次分支拉出来的代码进行的开发,如果对主干rebase其他分支的代码,那么别人将无法查看主干的历史,因为历史已经被你所篡改