场景描述: 开发个新功能 新建一个分支 feature
- 第一天提交 wip: commit-message-1
- 第二天提交 wip: commit-message-2
- 第三天提交 wip: commit-message-3
- ....
可能这里提交更多的信息... 想象一下我们这里提交很多commit信息,然后merge到develop是不是很乱。
先想想看有什么方案可以解决呢?
git有没有这样命令可以合并提交message呢?
答案是有的,今天咱们就来介绍一下git rebase -i 实战场景以及用法
场景实战:3次commit信息合并成一条commit信息
- 首先用git提交三次,用
git log --graph --oneline
可以查看提交历史信息,如下
- 在命令行执行
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