Git 的 Rebase 操作
变基 —— Git Rebase
如果有使用 Git Flow 模式协作开发经验的小伙伴应该对「变基」操作不陌生,对 Git Flow 不了解的,可以看看这篇文章:git-flow 的工作流程。
简单地说,git rebase
把一个分支中的提交追加到另外一个分支上。假如你有如下图所示的两个分支:
当执行 git rebase master other_branch
之后,git 会找出两个分支的最近的相同的提交 C
,然后把 other_branch
在此之后的提交追加到 master
上,形成 other_branch
的新的提交历史。
如果当前分支为 other_branch
,也可以简化变基命令为 git rebase master
。
Git rebase –onto
实际的工作中,我们需要变基的场景可能会比上述操作要复杂一点。比如对于以下的分支情况,我想把对 branch_two
变基,把 J-K-L
这几次提交追加到 master
分支上,像刚才的操作就没有办法满足我的要求。
![rebase –onto之前](/git-rebase-and-git-rebase-onto/rebase –onto之前.jpeg)
这个时候就要用到 git rebase --onto
了,使用以下命令,就可以将 branch_two
与 branch_one
最近的共同提交点之后的提交检出,并追加到 master
分支上,实现 branch_two
的花式变基。
1 | git rebase --onto master branch_one branch_two |
如果当前分支已经是 brance_two
了,也可以使用简化版的命令行 git rebase --onto master branch_one
。
![rebase –onto之后](/git-rebase-and-git-rebase-onto/rebase –onto之后.jpeg)
使用场景
大多数情况下,我们使用的都是 git rebase
,只有在某些情况下,才会需要用到 git rebase --onto
。
比如,我们项目组之前就遇到这样一种情况:本来应该基于某个 release 分支创建功能分支,但是阴差阳错地从更新的 develop 分支创建出来,而且发现的时候功能已经开发完全。
这种时候,就要通过 git rebase --onto
这种骚操作花式变基了。