变基到没有共同祖先的分支

Rebase onto branch without common ancestor

我有一棵树,如下所示:

A--B (master)

C (newbase)

它包含两个没有共同祖先的分支。提交 C 实际上是 A 的基线,一个从旧控制版本系统导入它的人只是忘了导入它。

我想对分支进行变基,使其看起来如下所示:

C--A--B

我试过了

git checkout master
git rebase --onto newbase A -s recursive -Xtheirs

但结果是

C--B

我想你可以只使用 rebase 然后删除 newbase 分支:

git checkout master
git rebase newbase

您需要使用 git rebase --root(加上您喜欢的任何其他选项,在本例中是您的 --onto 和策略选项)。

(我只用交互式变基测试过这个,但它被记录为适用于所有形式的变基。)