大家好,今天小乐和大家分享一下git rebase ~
当我们在dev分支想要merge主分支时
上一讲我们讲到可以使用git merge命令,合并后我们可以得到一个新的commit,它的parent有两个
如果使用 git rebase
git rebase master之后,dev分支的两个绿色commit会从原先的base(蓝色)分离出来,然后接到master后面,形成这样的效果:
要注意原来的dev分支上的两个commit并不能直接搬过来,因为改变base后一个commit的parent就会发生改变,也就导致了不同的SHA1. 因此,git rebase后,原先的两个commit变成了永远用不到的commit,它会在某个时刻被git的垃圾回收机制删除。
rebase后新的两个commit和原先灰色的两个commit,除了parent不一样之外,其余的都是相同的。也就是说,rebase会产生新的commit。这些新的commit和原有的commit只有parent是不一样的。
merge vs rebase ?
merge的好处是他总是准确地保留了提交的历史,只是看上去可能比较混乱。
rebase可以将历史整理为单一的一条链,看上去很整洁。但他让原本并行开发的commit有了先后顺序,可以说修改了历史。
除此之外,rebase还可以合并多个commit成一个commit(使用-i选项),让项目提交历史看上去更整洁~
谢谢观看!下次小乐会跟大家讲关于分布式系统中的git命令~