我已阅读RebaseProject页面并尝试了一个非平凡的例子 (不是改变一个完整的分支)。它与 rebase D on的情况类似 我是场景B的。
以下是rebase之前的情况:
default : 0 ----- 2
\
feature : 1 ----- 3
现在我想在3
上重新2
,给予:
default : 0 ----- 2 ----- 3
\
feature : 1
不幸的是RebaseProject中没有给出确切的命令 页面,但从我对用法概要的理解应该是:
hg rebase --source 3 --dest 2
但不知何故,我的理解必定是有缺陷的,因为我得到了一个与合并相结合的基础:
default : 0 ----- 2 ----- 3
\ /
feature : 1 -------
为什么?
重现场景的命令:
hg init
touch a
hg add a
hg commit -m "added a"
hg branch feature
touch b
hg add b
hg commit -m "added b on feature"
hg up -C default
touch c
hg add c
hg commit -m "added c on default"
hg up -C feature
echo "feature" >> a
hg commit -m "changed a on feature"
hg rebase --source 3 --dest 2
答案 0 :(得分:3)
您的方案与Rebase Project方案的rebase G onto I
部分scenario B
非常相似:
情景B
......
......将G重新加入I
在您的方案中,D
== 1
,I
== 2
和G
== 3
。重新定位后,3
维持与1
的关系,就像G'
保持与D
的关系一样。这是因为D
不是I
的祖先,并且:
注意:仅当父级是目标的祖先时,Rebase才会删除父关系。
您真的想删除该关系,然后,根据文档,您需要开发版来获取--detach
选项:
使用开发版本可以使用新的--detach选项来删除此关系。