合并远端多个commit为1个!

61 阅读1分钟

你刚接到了一个需求,于是你从 master 拉了一个分支,假设叫 feature/5.7.6

你开始放飞自我,写一行代码提交一个 commit,改一个标点符号提交一个 commit

要上线了,于是你把 feature/5.7.6 申请合并到了 master

于是你在 master 上看到了开发阶段你在 feature/5.7.6 分支上的 45 个提交

分别是

commit40 - feat: '修改一个按钮的类型'

commit39 - feat: '修改一个按钮的尺寸'

commit38 - feat: '修改一个按钮的背景色'

....

commit1 - feat:  '修改一个按钮的文字'

你的老板说,你明天就不用来了,你说老板在给我一次机会

你数了一下你提交了40个垃圾commit,于是你在命令行敲下来如下命令:

  1. git rebase -i HEAD~40 把前40个提交记录都调了出来,确定了一下哪些是自己提交的,把非自己提交 commit 的删掉
  2. 除了第一个开头是 pick之外,下面其他的所有都改成 s (squash)
  3. esc:wq, 保存退出
  4. 如果有冲突解决冲突,没冲突进入第 5
  5. 在最上面写入最终合并在一起的 commit 描述,以往其他的 commit 描述全部注释掉
  6. 执行步骤 3
  7. git push origin xxx -f

rebase.png

rebase3.png

11.png

此时你的远端将更新为 1 个commit!