持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
应用场景
当我们在本地仓库中提交了多次,在我们把本地提交push到公共仓库中之前,为了让提交记录更简洁明了,我们希望把如下分支A、B、C三个提交记录合并为一个完整的提交,然后再push到公共仓库。
命令使用
现在我们在测试分支上添加了四次提交,我们的目标是把最后三个提交合并为一个提交:
这里我们使用命令,进入vim编辑模式:
git rebase -i HEAD~3
可以看到如下页面,按下键盘的 i 键启动编辑模式:
这里用的编辑命令如下:
- squash:将该commit和前一个commit合并(缩写:s)
根据我们的需求,我们将commit内容编辑如下:
保存后退出,进入到下一个页面:
修改提交信息为,合并提交,注释的内容会被忽略掉:
这三次提交就被合并成一个提交了,打印看一下日志:
合并两个不连续的 commit
还有一种场景是,合并两个不连续的提交,就上面的例子来说,如果要合并第一次和第三次提交该如何操作呢?
进到vim编辑器后,是可以移动两行的顺序的,光标移动到第一行,使用命令 ddp ,交换第一行与第二行的位置,再将第三行的 pick 更改为 s 进行合并即可。