使用 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,并不会影响提交的内容。最终,修改后的结果如下图。

image

原文链接: https://dukeluo.me/2020/05/07/git-rebase.html


Duke
4 声望0 粉丝