0%

Git (八):压缩commit提交记录

这里介绍如何合并commit提交记录

abstract.png

实践

对于下述提交记录,这里期望将最新的4次commit记录合并为一个

figure 1.png

使用git rebase命令的i选项启动交互式变基,选定包含HEAD(当前分支最新提交)在内的4次最新的提交。这将打开一个vim编辑器。其会列出相应的commit,同时每个commit前都有一个命令(默认为pick)

1
git rebase -i HEAD~4

如果要将最新的4次commit记录合并为一个的话,我们需要将除了第一行commit外的所有commits命令从pick改为 s 或 squash。修改完commist前的命令后,保存并关闭vim编辑器

figure 2.png

此时git会再次打开vim编辑器,提示编辑新的commit信息。具体地,对于不需要的commit信息在最前面添加#注释符号,同时添加新的注释信息。最后保存并关闭vim编辑器

figure 3.png

现在,git会进行变基过程。如果变基过程中没有遇到冲突,就可以成功将多个commit压缩合并成一个新的commit了

figure 4.png

现在,就可以将合并的结果push到远程了

1
git push origin <远程分支名> --force

但为了防止远程分支上已经存在其他人提交的代码,推荐使用 —force-with-lease 选项进行push

1
git push origin <远程分支名> --force-with-lease

补充说明下,在修改commits命令时。还可以选择将第一行commit外的所有commits命令从pick改为 f 或 fixup。这样变基后会直接将第一行commit的提交信息作为压缩后新commit的信息,无需再次编辑指定

请我喝杯咖啡捏~

欢迎关注我的微信公众号:青灯抽丝