git合并多个commit

2,606 阅读1分钟

方法一:

使用git rebase

首先 git log查看需要合并的log ,合并最新的三次提交,所以目标ID是 1d4f4edb34

执行 git rebase -i 1d4f4edb34 ,想把前2次commit合并到最后一次当中,所以最后一个为pick,其他改为s。

按一下 键盘上的 i ,此时即可进行编辑

1587435794982

改好之后 ,保存退出( 按键盘上的 esc ,之后 输入 :wq ,回车即可)

然后进入commit message编辑界面 ,保留你需要的commit message,其他所有信息用#注释。保存退出

git log查看结果,符合我们的预期,push即可,如果不行请git push -f。

方法二:

  1. git log查看不需要合并的最后一个commit id
  2. git reset XXX(回退到该commit,即不需要合并的最后一个commit)
  3. log中所有需要合并的commit 已被去掉,并且这些commit的修改没有保存,于是git add . 把所有修改加入commit。
  4. git commit提交即可

问题来了

当我们 合并过多个commit 之后,后悔了,想要改回原来的状态

首先:执行 git reflog 查看本地记录

可知本次 rebase 之前的 id 为 56c7cd3

所以执行 git reset --hard 56c7cd3 即可