如果使用git,相信大家比较多的使用merge,对于rebase则少有陌生。相信刚使用git不久的同学会有一个困惑,经常使用merge会造成破窗效应,查阅log时会掺杂了大量无用的小提交,起初也对此习以为常,毕竟svn就是这样。 使用rebase其中的一个好处就是能够将多个commit合并为一次提交,但是网络上比较多的都是基于命令行,今天记录一下总结的基于小乌龟Git的merge/rebase提交管理流程。
理解git中上游下游概念
上游下游是一种相对概念,相对于remote/master,master就是下游。而相对于master分支,用于功能开发的dev分支就是下游。 总体的原则是,是下游分支(dev)与上游分支(master)合并方式使用rebase,并且rebase之前合并commit,来确保下游分支进度在上游分支之前,合并以及冲突解决在下游中解决。因此上游分支(master)使用merge方式同下游分支进行合并
正式开始
- 初始化版本库,添加1.txt,创建并切换至dev分支
 - 继续开发,master提交1次,dev提交2次
 - 从master中更新合并
- dev分支压缩commit,这样做有两个好处:整理commit,减少之后rebase的合并次数
 - 使用rebase从master进行合并,解决合并冲突以后,分支树变成一条直线
 - dev更新合并完成
- 切换至master分支,并使用merge合并dev

|