重新建立到没有共同祖先的分支上

nkd*_*kdm 3 git git-rebase

我有一棵树,如下所示:

A--B (master)

C (newbase)
Run Code Online (Sandbox Code Playgroud)

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

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

C--A--B
Run Code Online (Sandbox Code Playgroud)

我试过

git checkout master
git rebase --onto newbase A -s recursive -Xtheirs
Run Code Online (Sandbox Code Playgroud)

但这会导致

C--B
Run Code Online (Sandbox Code Playgroud)

tor*_*rek 5

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

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