一、使用情况
有时候我们修改了一个问题,commit之后发现还需要优化,又修改了多次完成,但是commit了N多次,这时候最好将几条commit合并。
总有人问为啥合并,bug都修好了,也不耽误使用?对,不耽误功能,耽误别人看(狗头),都是搬砖的,都不容易。
二、使用方法
1、查看提交日志
git log : 查看完整的日志内容,有commit的HEAD,有提交人Author , 提交时间Date和注释内容 。git log --pretty=oneline --abbrev-commit: 查看日志简略内容,一行显示commit。
2、合并命令
git rebase -i HEAD~3:合并最近的三条的commitgit rebase -i c290bf3 918c410: 合并 c290bf3 ~ 918c410 之间的commit 。
通过git log可以知道,上面两个合并命令执行之后的结果相同,都如下。
- 上面是要编辑指令的部分
- Commands:是修改指令的说明部分
| 缩写 | 全写 | 命令说明 |
|---|---|---|
| p | pick | 保留该commit |
| r | reword | 保留该commit , 但是要修改commit 的注释信息 |
| e | edit | 保留该commit , 但是要停下来修改该commit(不仅仅可以修改注释信息) |
| s | squash | 该 commit 和前一个 commit 合并 |
| f | fixup | 类似squash , 该commit 和 前一个commit 合并,但是不保留该commit的注释信息 |
| x | exec | 执行shell命令 |
| d | drop | 丢弃该commit |
3、编辑指令
-
输入i,进去insert模式(终端最下面会出现INSERT) - 编辑如下,我的需求是将 修改bug 的 两条commit合并到 修改XXX功能 中。
- 修改完成后按
esc,退出编辑模式,输入:wq保存编辑。
4、推送到远程
- 再次查看一下log日志,合并成功!!
- 使用
git push -f强制将commit合并推送到远程。