0x00 场景
已经提交到仓库的代码,但是想合并某几次commit操作。
0x01 命令
命令格式:git rebase -i xxx
xxx代表从哪次commit开始合并,合并会列出xxx之前的commit,通过改变这些commit的状态完成合并。
1、可以通过git log 查看commitId, 例如9e4509b70594f5f2847ad5a5894f6ca3fb1cf5d3
2、可以用HEAD表示。HEAD^的意思是最近一次commit,也可以写成HEAD~1,HEAD~2则表示倒数第二个commit。
例如:
git rebase -i HEAD~2 表示合并当前commit和上一个commit
git rebase -i 9e4509b70594f5f2847ad5a5894f6ca3fb1cf5d3
表示 合并9e4509b70594f5f2847ad5a5894f6ca3fb1cf5d3之前的commit(不包含此次commit)
0x02 场景
场景1: 合并刚刚提交的n个commit
1、执行git rebase -i HEAD~2,执行后会进入vim编辑器,编辑器中会出现两次commit的信息。
2、合并
把要合并的commit全部改为s,wq保存退出。
3、修改合并后的comment
此时会弹出vim编辑器,是合并后的几次commit信息,修改后wq保存退出。