代码改变世界

git rebase -i HEAD~3合并多个提交为一个提交

2020-12-04 17:42  加个小鸡腿  阅读(9554)  评论(0编辑  收藏  举报

场景:新功能在本地的dev_feat分支开发过程中,提交了多次,生成了多个commit id,开发测试完成后将新功能合并到dev分支上,但是不想要这些提交记录,那么可以将多个commitid合并成一个,再merge或者push到dev分支上。

比如git log 看到以下三个提交:

 

前面说过 commit 是为了防止意外丢失代码,但是在推到远端之前,最好把一次开发的 commit 合并成一个,避免污染远端的 git commit message

前面说过 commit 是为了防止意外丢失代码,但是在推到远端之前,最好把一次开发的 commit 合并成一个,避免污染远端的 git commit message

因为这个例子中有3个 commit,所以执行 git rebase -i HEAD~3

然后就会看到一个 vim 界面 (不熟悉 vim 基础操作的读者请自行查阅搜索)

 

 记住不要动最上面的那行,把下面几行开头的 pick 换成 s , 然后保存

这时会显示另一个 vim 界面

 

 

 删除所有内容( #开头的可以忽略),然后写一句简短、准确的句子作为这次开发的 commit message,如

 

 

然后保存

如果成功了就能看见这么一些文字

 

 

最后使用 git logl 确认所有这次开发中的 commit message 都被压缩成了一个

(这边只介绍了 git rebase的最简单直接的用法,有兴趣的读者可以去阅读官方文档,了解更详细、高级的用法,如第一次vim界面里使用 f 替代 s 有时候更方便)

 

参考:

血泪教训之请不要再轻视Git —— 我在工作中是如何使用 Git 的 - 知乎 (zhihu.com)