git rebase:将多次commit合并为一个

815 阅读2分钟

前提:在一个分支上进行了多次commit,每次都push到远程仓库

在进行开发的时候,从主分支拉取一个分支进行代码编写。有时候为了保存当前的工作会commit好多次,导致 线上仓库会有很多个请求,在合并分支的时候最好能将多个请求合成一个。下面的具体的步骤:

1. git log 查看所有commit分支

  • 可能只会显示一部分,按回车键会继续显示剩余部分,直到出现第一次提交的记录
  • 退出的时候按字母 q 即可

2.git rebase -i commitID 合并分支

  • 这里的commitID选首次提交的再前一次的 commitID,因为它不会合并你填写的commitID的这个commit,而是从它之后的所有commit合并 。如果你选择的是第一次提交的commitID,它只会从你第二次的commit开始合并(这个分支最开始提交的commit记为第一次,最近的一次记为最后一次)

3.进入之后将除了第一个的pick,其他都改为 f 。保存并退出

  • 进入之后,按下字母 i 进入编辑模式。移动按键修改,修改完后按Esc退出编辑模式,按 :wq 退出 (冒号不能少)。

4.git push -f 强制push到线上仓库

  • 这步结束后到当前操作分支的线上仓库去,刷新一下就可以看到之前好多次commit合成了一个。 名称显示的是第一次commit提交的。下面的内容是之前好多次之前提交的总和。

Tips

关于第三步的合并方式:

 如果是合并最近三次的提交
 git rebase -i commitID     commitID  为前第四次提交的commit的ID
 git rebase -i HEAD~3       HEAD~num  num为3