你刚接到了一个需求,于是你从 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,于是你在命令行敲下来如下命令:
git rebase -i HEAD~40把前40个提交记录都调了出来,确定了一下哪些是自己提交的,把非自己提交 commit 的删掉- 除了第一个开头是
pick之外,下面其他的所有都改成s(squash) - 摁
esc和:wq, 保存退出 - 如果有冲突解决冲突,没冲突进入第
5步 - 在最上面写入最终合并在一起的 commit 描述,以往其他的 commit 描述全部注释掉
- 执行步骤
3 - git push origin xxx -f
此时你的远端将更新为 1 个commit!