简介
有时候编写一个功能或者需求会提交多次commit,而有些commit只是修改了一些无关紧要的东西。而过多的commit记录是不利于codereview,并且当遇到特殊情况需要做版本回滚的时候,过多的commit记录也会带来问题。这个时候就需要把一些commit记录进行合并。让每个commit都是一个完整的功能,做到每个commit都是有必要的。
使用示例
现在工作目录中创建一个测试文件gitrebase.txt,并添加内容first commit,提交。
接着再分别提交两次second commit和third commit。如图。
三次commit的信息分别是first commit,second commit,third commit。接下来使用rebase指令把前两次commit合并。
git rebase -i HEAD~3
使用上面的指令查看最近三次commit,如图所示。
进入编辑模式,第一列为操作指令,第二列为commit号,第三列为commit信息。
pick:保留该commit;
reword:保留该commit但是修改commit信息;
edit:保留该commit但是要修改commit内容;
squash:将该commit和前一个commit合并;
fixup:将该commit和前一个commit合并,并不保留该commit的commit信息;
exec:执行shell命令;
drop:删除该commit。
保存退出,进入编辑框,编辑合并后的commit信息“1&2 commit.”到this is a combination of 2 commits.保存退出。
接下来再使用git log或者使用git rebase -i查看commit信息,如下:
一二两次提交合并成功。