前提:在一个分支上进行了多次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