月度归档:2014年11月

Git rebase合并多个commit

有时候为了修改一个功能,对一个功能进行了多次琐碎commit,想把这些琐碎的commit整合成一个commit就可以使用rebase进行操作。比如,我现在有4个分支分别如下:

  • fix issue CAT-1061
  • fix issue CAT-1061
  • fix issue CAT-1061
  • removed unused variable

现在我想把这个4个commit合成一个commit。

第一步,打开你的项目的git bash界面。

输入如下命令:

git rebase -i HEAD~4

命令说明:i代表interactive的意思,就理解为对它的操作吧。HEAD是指向当前版本的文件头指针,HEAD~4指的是对从HEAD开始的前4个commit进行操作。

第二步,指向完上面的命令以后,会弹出一个文本编辑器(git默认是vim或者其他的文本编辑器)如下图

pick

pick代表支持rebase整合的分支,如果把那个pick移除掉这个commit就会不见。这里我们的目标是合并所以,把后三条的pick改成squash(挤压的意思)就可以达成我们压缩commit的目的,结果如下:

squash

 

然后保存并退出就会开始rebase了。

Tips:如果是用vim,在退出编辑模式(按esc)然后就是进入了command mode,此时输入命令:wq就是保存和退出的意思。