(二)多个commit合并成一个

552 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

应用场景

当我们在本地仓库中提交了多次,在我们把本地提交push到公共仓库中之前,为了让提交记录更简洁明了,我们希望把如下分支A、B、C三个提交记录合并为一个完整的提交,然后再push到公共仓库。

命令使用

现在我们在测试分支上添加了四次提交,我们的目标是把最后三个提交合并为一个提交:

image.png

这里我们使用命令,进入vim编辑模式:

git rebase -i HEAD~3 

可以看到如下页面,按下键盘的 i 键启动编辑模式:

image.png

这里用的编辑命令如下:

  • squash:将该commit和前一个commit合并(缩写:s)

根据我们的需求,我们将commit内容编辑如下:
image.png
保存后退出,进入到下一个页面:
image.png
修改提交信息为,合并提交,注释的内容会被忽略掉:
image.png
这三次提交就被合并成一个提交了,打印看一下日志:
image.png

合并两个不连续的 commit

还有一种场景是,合并两个不连续的提交,就上面的例子来说,如果要合并第一次和第三次提交该如何操作呢?

image.png

进到vim编辑器后,是可以移动两行的顺序的,光标移动到第一行,使用命令 ddp ,交换第一行与第二行的位置,再将第三行的 pick 更改为 s 进行合并即可。