Mercurial - 多头 - 如何"放弃"一个头并将另一个作为提示/默认值?

Dan*_*eny 3 mercurial dvcs bitbucket branching-and-merging

我在Bitbucket上分叉了一些elses存储库并进行了一些更改(并将它们推送到我的分叉存储库).与此同时,原作者进行了重大修改(几乎是重写).

我想更新我的repo与他的完全相同(但我的更改仍然存在于该标签上),他可以轻松地提取我的新更改,而不会影响我之前做出的任何更改.

我将他的更改添加到我的本地版本中,这让我有两个脑袋.我想把他的头作为提示/默认.我尝试通过以下方式解决此问题(基于一些SO答案):

hg update -r [myrev]
hg commit --close-branch
hg update -r [hisrev]
Run Code Online (Sandbox Code Playgroud)

似乎让我处于我想要的状态.我的工作目录看起来像他的.然而,当我hg push试着告诉我这会产生多个遥控头时,我不确定这是否是我想要的(这个消息让它听起来很吓人!)

那么,我这样做了吗?我应该强行推吗?这会做我想做的事情(例如,保留我的更改副本,以便我可以找到它们,但这种方式通常不会干扰?).如果是这样,这是实现这一目标的最佳方式吗?

Ry4*_*ase 5

在一个封闭的分支上的头仍然是头,所以如果你想推动你需要的那些变化--force.

另一个选择是将该头部合并到您想要的默认分支中,但不选择任何更改.这可以使用以下方式以非交互方式完成:

hg update [hisrev]
hg --config ui.merge=internal:local merge [myrev]
hg commit
Run Code Online (Sandbox Code Playgroud)

你将只有一个头,它只有他的内容,但你的历史仍然可用.