git rebase将多次commit合并为一条

发表于:2019-08-15

概述

在项目进行多次迭代优化时会有多次commit记录, 而这几次记录完全可以当做一次commit, 这就会导致分支历史记录很混乱,如:

在回退版本的时候难以选择,通常需要每条commit都要检查一遍, 这时候 rebase 功能就发挥出来了。

将多次commit合并为一条

现在把这4条合并为1条记录

操作步骤

1、-i 指定要合并的那一条记录的上一条 commitId

git rebase -i e88835de905ad396f61a0dc8c040a8ac8a34f3f8

或者使用数字的方式

git rebase -i HEAD~4

2、此时会进入 rebase 交互式终端

这里有几个关键字要说下:

  • pick 使用这一次commit
  • squash/s 使用commit,但合并到以前的commit中
  • d 移除这一次提交

我们要把最后3次提交合并到第一条,所以将最后3个 pick 改成 s, 接着 wq保存退出。

接着会进入到另一个交互式终端,如果commit message 无异议可以直接 wq 保存退出,

为了便于大家理解,我将commit message修改了下

如果执行到这一步时想放弃之前rebase的操作,可以执行以下命令:

git rebase --abort

3、推送到远程仓库

git push --force

最后看看提交后的历史, 这下美观了吧。

其他