在没有共同祖先的情况下将代码库重新基于分支

3

我有一棵树,长成以下这个样子:

A--B (master)

C (newbase)

这段文本涉及IT技术相关内容。其中包含两个没有共同祖先的分支。实际上,提交代码 C 是 A 分支的一个基线。由于导入旧的版本控制系统时忘记导入此代码,因此 A 分支缺失了该代码。

我希望将分支进行 rebase 操作,以使其显示如下:

C--A--B

我尝试了。
git checkout master
git rebase --onto newbase A -s recursive -Xtheirs

但是这会导致
C--B

我从未对最顶端的提交进行过变基操作...但是尝试将A替换为A~1,看看会发生什么。 - Tim Bodeit
这是因为在rebase中使用upstream时,upstream-commit本身不会被包括进去,所以你必须使用git rebase --onto newbase A~ ... - JDurstberger
我不能这样做,因为A是根。 - nkdm
@nkdm 只需使用常规的rebase命令。请看我的回答。你在孤立分支上进行rebase不是问题。 - Stas
2个回答

5
你需要使用git rebase --root命令(加上你喜欢的其他选项,在这种情况下是你的--onto和策略选项)。
(我只测试过交互式rebase,但它被记录为适用于所有形式的rebase。)

1

我想你可以使用变基,然后删除newbase分支:

git checkout master
git rebase newbase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接