git rebase 实战操作,一学就会

255 阅读2分钟

场景描述: 开发个新功能 新建一个分支 feature

  • 第一天提交 wip: commit-message-1
  • 第二天提交 wip: commit-message-2
  • 第三天提交 wip: commit-message-3
  • ....

可能这里提交更多的信息... 想象一下我们这里提交很多commit信息,然后merge到develop是不是很乱。

先想想看有什么方案可以解决呢?

git有没有这样命令可以合并提交message呢?

答案是有的,今天咱们就来介绍一下git rebase -i 实战场景以及用法

场景实战:3次commit信息合并成一条commit信息

  1. 首先用git提交三次,用
 git log --graph --oneline 

可以查看提交历史信息,如下

  1. 在命令行执行
git rebase -i HEAD~3

此时你的命令行会打开vim编辑器

我们来简单的解读下这些命令代表什么意思

pick:保留该commit(缩写:p)

reword:保留该commit,但我需要修改该commit的注释(缩写:r)

edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)

squash:将该commit和前一个commit合并(缩写:s)

fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)

exec:执行shell命令(缩写:x)

drop:我要丢弃该commit(缩写:d)

现在我们要把 commit-message-2 和 commit-message-3 提交信息合并到 commit-message-1上

操作如下

  • 按 i 进入插入模式, 将 commit-message-2 和 commit-message-3 前面的pick 改成 squash

  • 然后wq保存退出

  • 进入vim提交信息界面

  • 修改 commit 信息

  • 然后wq保存退出,命令行输出操作成功

  • git log 查看提交信息,三条提交信息合并到一条了

3.执行命令,强制推送到当前分支。

  git push origin feature -f