git rebase没事做

问题描述 投票:1回答:2

我有以下提交,以及master和另外2个分支(b1和b2):

a - b - c
^   ^   ^ 
|   b1  b2
master

我想使b2分支变基,因此其父级为master:

a - b <- b1
 \- c <- b2
^
\- master

[如果执行git rebase mastergit rebase origin/master,则得到Current branch c is up to date。这似乎是错误的,但我认为这与b2在某些方面已经掌握这一事实有关。我必须使用--onto也似乎是错误的。

git rebase
2个回答
1
投票

老实说,在这种情况下,您可以将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


0
投票

因此,在我发布此消息后不久,我就明白了这个问题:从技术上讲,b2分支的根源是master而不是b1。这对我来说并不明显。另外,master上没有其他提交,因此b2已经植根于master HEAD。因此,直线git rebase master不执行任何操作。

[如果在master上还有其他提交,可能会直接进行rebase操作,尽管它会包含b1提交,所以这不是我想要的。

我不得不改为git rebase --onto master b1,这意味着“将当前分支(b2)重新设置到主节点上,但仅在b1提交之后(b2必须重叠)。”>

© www.soinside.com 2019 - 2024. All rights reserved.