git rebase -i 合并多次提交

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git rebase -i 合并多次提交相关的知识,希望对你有一定的参考价值。

参考技术A 在实际开发中,经常会需要使用到git合并功能,git rebase可以将多个commit合并成为一个。
这里主要介绍一下git rebase -i命令的使用:

这里有几个使用说明(前面字母是缩写):

p,pick:使用该次提交
r,reword:使用该次提交,但重新编辑提交信息
e,edit:使用该次提交,但停止到该次提交
s,squash:将该commit和前一个commit合并
f,fixup:将该commit和前一个commit合并,但不保留该提交的注释信息
x,exec:执行shell命令
d,drop:丢弃该commit

我这里除了第一个保留pick,其余改成s就可以了。

之后同样是输入i进入编辑界面,修改自己的commit message

Git rebase 使用

Git rebase 使用

个人使用场景:合并当前分支的多个commit记录

如图所示,一个需求对应一个分支,该分支上有多次提交记录(业务变更,有事暂存代码),如果合并到远程就会有A、B、C、D四个记录,现在只想有一条记录,如何处理?

Git 执行命令

第一步 rebase

HEAD 后接的数就表示需要合并多少条commit(此处是最新的commit)

 git rebase -i HEAD~4

第二步 squash

把 BCD 的前面的pick 改为 s
esc : wq

第三步 修改注释

esc : wq

结果

此时新的记录就会变成如下场景:


右下角产生变化,如下

其他

 git rebase -i HEAD~4

HEAD 后接的数就表示需要合并多少条commit(此处是最新的4条commit)


git rebase -i [startPonit] [endPoint]
  1. 前开后闭 区间 这里的 [startPonit] 是指需要合并的commit的前一个commit (即当前示例中的 “4cb600e: feat: modify a”)。 因为, 三个commit肯定要基于上一个commit合并成了新的commit。
  2. 谨慎使用[endPoint] 省略, 即默认表示从起始commit一直到最后一个,但是一旦你填写了, 则表示 [endPoint]后面的commit全部不要了!

以上是关于git rebase -i 合并多次提交的主要内容,如果未能解决你的问题,请参考以下文章

使用git rebase合并多次commit

使用git rebase合并多次commit

gitgit rebase 合并几个commit

git svn rebase 错过/丢失提交(在 rebase --continue 由于合并冲突)?

git rebase 交互式:将提交合并到一起

Git--rebase合并提交