使用 git rebase 合并历史提交和修改记录 Commit Message

使用 Git 做版本控制,毋庸置疑非常方便,可随心所欲地修改代码。提交代码是开发人员每天都在做的事情,清爽的提交记录让人爽心悦目。在有的场景之下,开发会产生一些琐碎的提交记录,譬如调试 CI 工具的提交,零星修改 bug 的提交,这些提交记录理应属于一条记录,这种情况之下就可以通过 git rebase 合并历史提交。

合并历史提交

以前我常用 git commit --amend --no-edit 来合并提交记录,它会把最新的提交记录合并至上一条提交记录,适用的场景有限。

在上图的场景中,提交历史包含调试 CI 的多个提交,并且调试 CI 的提交不是最新提交,这时便可通过 git rebase 命令来达到合并历史提交的目的。敲入 git rebase -i HEAD~5 便可进入 rebase 的交互页面。此场景下,我希望查看当前 HEAD 前的 5 个提交,所以为 HEAD~5。另外,git rebase -i --root 命令可将范围选定为所有的提交记录。

根据 Commands 中的信息,合并历史提交应该使用 s 标记,它会把标记的提交记录合并至上一条提交记录。

修改记录 Commit Message

上图为合并历史提交记录之后的效果,git rebase 命令把琐碎的提交记录整合成一条,提交记录看起来清爽了许多。细看一下,调试 CI 工具的 Commit Message 有误,应该使用 chore 类型,这时可继续使用 git rebase 命令来修改 Commit Message。根据刚才 Commands 的信息,修改记录 Commit Message 场景下应该使用 r 标记,它只会修改 Commit Message,并不会影响提交的内容。最终,修改后的结果如下图。