当我们做一个需求时,由于各种各样的原因就会出现一个问题:同一个需求分成了很多次 commit 提交,而这些提交拼接起来才是一个完整的功能。为了避免太多的 commit 而造成版本控制混乱,提交日志看起来更清晰明了,一般推荐将多个 commit 合并成一个提交。
假设我们做了以下3个commit,而我们想把前两个提交也就是 commit bd61dae 和 commit d9a0c84 合并成一个提交。
输入命令:
git rebase -i commitId
这里的commitId就是想要合并的多个记录之前的一个提交记录commitId,即 3be0e8f 。
回车 enter 进入 vim 编辑模式
每行有三部分组成:命令名称 + commit hash + 提交message,# 号开头的则是命令的提示说明。
pick:保留该
commit
(缩写:p)
squash:将该
commit
和前一个
commit
合并(缩写:s)
这里将 commit d9a0c84 改为 s 或 squash
之后按 Esc,回到一般模式,你会发现左下角的
--插入--
不见了。然后输入 :wq 保存退出。
vim 编辑器退出
:q! -> 强制退出不保存
:wq -> 保存后退出
:wq! -> 强制保存后退出
之后会第二次进入vim编辑模式
将 commit message B 和 commit message C 提交信息删除,重新写提交信息,然后和之前的操作一样保存退出。
这时输入 git log
查看提交日志,可以看到多个commit已经合并成了一个
如有理解不对需要改进地方或者自己有其他见解的欢迎在评论区提出哟,希望我们可以一起交流学习。