方法一:
使用git rebase
首先 git log查看需要合并的log ,合并最新的三次提交,所以目标ID是 1d4f4edb34
执行 git rebase -i 1d4f4edb34 ,想把前2次commit合并到最后一次当中,所以最后一个为pick,其他改为s。
按一下 键盘上的 i ,此时即可进行编辑
改好之后 ,保存退出( 按键盘上的 esc ,之后 输入 :wq ,回车即可)
然后进入commit message编辑界面 ,保留你需要的commit message,其他所有信息用#注释。保存退出
git log查看结果,符合我们的预期,push即可,如果不行请git push -f。
方法二:
- git log查看不需要合并的最后一个commit id
- git reset XXX(回退到该commit,即不需要合并的最后一个commit)
- log中所有需要合并的commit 已被去掉,并且这些commit的修改没有保存,于是git add . 把所有修改加入commit。
- git commit提交即可
问题来了
当我们 合并过多个commit 之后,后悔了,想要改回原来的状态
首先:执行 git reflog 查看本地记录
可知本次 rebase 之前的 id 为 56c7cd3
所以执行 git reset --hard 56c7cd3 即可