Git合并多次提交——续

上次分享了使用patch来合并多次commit,从而获取比较干净的提交历史的方法。最近在工作中又发现使用Git中的rebase命令就可以很方便地达到同样的效果。

比如,我们在master分支中保存稳定版本的代码,在dev分支中继续开发。现在开发的某个阶段完成,需要将变更合并到master分支中,在合并之前,就可以利用rebase命令得到一个干净的提交历史。方法如下:

然后会进入到另一个界面,在里面列出从master分支到dev分支的所有commit,每条记录前都有一个命令,可以更改这个命令来达到不同的目的。具体的命令和注释如下:

所以,我们可以将最后一次commit设置为reword,其他提交设置为fixup或squash,保存退出后就可以编辑所有这些commit的注释,最后合并为一次commit。

根据《Pro Git》上的描述,rebase命令的原理,其实也是将每次commit的diff保存在临时文件中,最后一次性将所有临时文件当作“补丁”打上,与上次讲到的patch方法原理类似。

最后,有一个需要注意的问题,就是千万不要对已经push到服务器上的commit做合并操作,不然会导致版本混乱。关于这点详细描述,可以参考《Pro Git》中的论述。

吃桔子的攻城狮

修炼ing……

发表评论