相同点
都是合并代码
不同点
从现象上来看(source tree)merge是非线性的,会有分叉,rebase是线性的,不会有分叉。
本质上merge会保留所有的commit记录,rebase会将中间所有的commit记录进行合并,放到最前面,做为一个commit进行提交。
使用场景
merge:需要保留所有的commit记录详细时间点
rebase:不需要保留所有的commit记录详细时间点
注意
使用rebase的时候如果发生了代码冲突,如果有两次commit记录发生了冲突,需要先解决一个冲突,然后rebase,然后再解决一个冲突,再rebase。
使用merge的时候如果发生了代码冲突,如果有两次commit记录发生了冲突,只需要一次性全部解决完冲突就行了。
网友评论