git merge与git rebase区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhongqianli/article/details/86668270

作用都是将一个分支整合到另一个分支。
差异: git merge是进行三方合并;git rebase是先更新“base”,再将当前分支的差异补丁重新打上去。

git merge 合并

工作原理: 将两个分支最新的快照以及二者的共同祖先进行三方合并。

在这里插入图片描述

git rebase 衍合

工作原理: 回到两个分支的共同祖先,提取所在分支每次提交时产生的差异,将这些差异分别保存到临时文件里,然后从当前分支转换到你需要衍合的分支,依序施用每一个差异补丁文件。
【可以理解为,先保存当前分支的差异补丁,然后更新base为新的base,再将保存的差异补丁施用到新的base上,base理解为分支的共同部分】

在这里插入图片描述

优点: 可以产生更为整洁的提交历史
缺点: 在衍合的时候,实际上抛弃了一些现存的 commit 而创造了一些类似但不同的新 commit。会影响那些基于现存commit的分支。

永远不要衍合那些已经推送到公共仓库的更新。

如果把衍合当成一种在推送之前清理提交历史的手段,而且仅仅衍合那些永远不会公开的
commit,那就不会有任何问题。如果衍合那些已经公开的 commit,而与此同时其他人已经
用这些 commit 进行了后续的开发工作,那你有得麻烦了。

猜你喜欢

转载自blog.csdn.net/zhongqianli/article/details/86668270