Git (八):压缩commit提交记录
这里介绍如何合并commit提交记录
abstract.png 实践
figure 1.png
figure 2.png
figure 3.png
figure 4.png

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

使用git rebase命令的i选项启动交互式变基,选定包含HEAD(当前分支最新提交)在内的4次最新的提交。这将打开一个vim编辑器。其会列出相应的commit,同时每个commit前都有一个命令(默认为pick)
git rebase -i HEAD~4
如果要将最新的4次commit记录合并为一个的话,我们需要将除了第一行commit外的所有commits命令从pick改为 s 或 squash。修改完commist前的命令后,保存并关闭vim编辑器

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

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

现在,就可以将合并的结果push到远程了
git push origin <远程分支名> --force
但为了防止远程分支上已经存在其他人提交的代码,推荐使用 --force-with-lease 选项进行push
git push origin <远程分支名> --force-with-lease
补充说明下,在修改commits命令时。还可以选择将第一行commit外的所有commits命令从pick改为 f 或 fixup。这样变基后会直接将第一行commit的提交信息作为压缩后新commit的信息,无需再次编辑指定
评论