我有以下提交,以及master和另外2个分支(b1和b2):
a - b - c
^ ^ ^
| b1 b2
master
我想使b2分支变基,因此其父级为master:
a - b <- b1
\- c <- b2
^
\- master
[如果执行git rebase master
或git rebase origin/master
,则得到Current branch c is up to date
。这似乎是错误的,但我认为这与b2在某些方面已经掌握这一事实有关。我必须使用--onto也似乎是错误的。
老实说,在这种情况下,您可以将c
提交樱桃拾取到来自master
的新分支上:
# from b2
git reset --hard master
git cherry-pick c
如果要使用变基选项,请使用--onto
:
# from b2
git rebase --onto a b
上面说的是重新设置b2
分支的基础,以便其父为b
提交(仅c
提交)的提交现在应该位于new基础上,特别是提交a
。
因此,在我发布此消息后不久,我就明白了这个问题:从技术上讲,b2分支的根源是master而不是b1。这对我来说并不明显。另外,master上没有其他提交,因此b2已经植根于master HEAD。因此,直线git rebase master
不执行任何操作。
[如果在master上还有其他提交,可能会直接进行rebase操作,尽管它会包含b1提交,所以这不是我想要的。
我不得不改为git rebase --onto master b1
,这意味着“将当前分支(b2)重新设置到主节点上,但仅在b1提交之后(b2必须重叠)。”>