一、git rebase解决什么问题
git merge 命令存在两种情景
1、 fast-forward (以后分支的base与master最新commit统一)
2、 no-fast-forward (以后分支的base与master最新commit不统一)
git rebase就是将no-fast-forward变成fast-forward
二、时间轴比对
应用rebase
应用merge
三、场景
上游(dev)分支更新上游(master)分支内容,应用rebase
上游(master)分支合并上游(dev)分支内容,应用merge
以后分支更新操作:git pull origin dev --rebase
以后分支rebase之后:git push origin dev --force
git rebase 个别只用于非master分支,比方在dev分支中执行git rebase master,master分支始终作为基准分分支
git merge 能够在任何分支merge其余分支,比方在master中merge dev,也能够在dev分支中merge master
另一种场景:
fork我的项目,提交pr更多的时候采纳git rebase
四、rebase劣势
rebase提供一套清晰的代码历史。
在咱们以后的oceanus我的项目开发中,分支只存在于迭代的开发中,开发实现之后个性分支保留一段时间之后就会被删除,所以采纳merge合并代码的网格记录对于咱们来说,其实没什么价值。
另外最近一段时间存量迭代较多,导致一个个性分支公布之后,每个存量迭代对应的分支代码都会进行一次merge,会无形之中增加很多 merge branch master into ... 记录。
merge合并代码是按commit提交的工夫来解决,所以Merge branch 'v4.6-subnet' into v4.6.0-savepoint相似的提交与理论的commit可能相隔很远,而且commit与其余分支的commit交错在一起,导致某一个实现性能开发的代码提交记录被宰割。
rebase因为存在commit refresh,所以commit在提交之后追加到上游分支,成线形记录。
优质文章举荐:
https://zhuanlan.zhihu.com/p/...