Fari

git rebase VS merge

代码从commit init处分为了两个分支,branch1和branch2,它们上面分别有各自的commit,c1、c2 和 c3、c4

此时切换到 branch1 处,并执行 git rebase branch2 就会这样:

大概就是:将要rebase分支上的提交作为当前分支的基,然后将当前分支上的提交都生成一个新的提交建立在新的基上。所以rebase被称为 变基,改变了当前分支所有commit的基础代码

而merge则是

看到并没有创建新的commit(即 commit ID 是对应一样的),并且是基于当前分支的commit所做的修改

试想一下,生产环境中的main分支应该使用merge还是rebase来合并bugfix分支上的代码呢?

个人感觉应该使用merge,因为它更符合人的直观感觉,它是一种线性的、追加形式的。代码出了问题或者有新的功能添加,它应该就是以追加的形式添加代码的

至于说能不能用rebase,当然也是可以的,merge和rabase都是代码合并的手段,其最终效果还是一样的

rebase不仅可以用来合并代码,还能加上 -i 参数可视化修改提交,是一个功能非常强大的命令

Tags: