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

标签 mercurial dvcs branching-and-merging bitbucket

我在 Bitbucket 上 fork 了其他人的存储库并进行了一些更改(并将它们推送到我的 fork 存储库)。与此同时,原作者进行了实质性修改(几乎是重写)。

我想将我的存储库更新为与他的存储库完全相同(但我的更改仍然存在于该标签上),这样他就可以轻松地提取我的新更改,而不会影响我之前所做的更改。

我把他的更改拉到了我的本地版本中,这给我留下了两个头。我想把他的头作为提示/默认。我尝试通过执行以下操作来解决此问题(基于一些 SO 答案):

hg update -r [myrev]
hg commit --close-branch
hg update -r [hisrev]

似乎让我处于我想要的状态。我的工作目录看起来像他的。但是,当我尝试 hg Push 时,我被告知这将创建多个远程头,并且我不确定这是否是我想要的(该消息听起来很可怕!)

那么,我这样做正确吗?我应该强行插入吗?这会做我想要的事情吗(例如,保留我的更改的副本,以便我可以访问它们,但通常不会干扰?)。如果是这样,这是实现这一目标的最佳方法吗?

最佳答案

关闭分支上的头仍然是头,因此如果您想推送这些更改,则需要--force

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

hg update [hisrev]
hg --config ui.merge=internal:local merge [myrev]
hg commit

你会只剩下一个脑袋,里面只有他的内容,但你的内容仍然可以在历史中找到。

关于Mercurial - 多个头 - 我如何 "abandon"一个头并将另一个作为提示/默认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080864/

相关文章:

git - 如何将一个分支目录中的文件 merge 到另一个分支?

mercurial - 在 mercurial 的分支之间区分单个文件

version-control - 使用 mercurial 执行空提交

linux - 如何以人类可读的格式(最好使用 kdiff3)打开 (Mercurial) 补丁文件?

python - 我怎样才能让我的 python 文件显示其 mercurial 标签或修订作为模块版本?

git - 你如何组织你的 git 仓库?

mercurial - 将 DVCS 与 Visual Source Safe 相结合

version-control - 有人在企业环境中使用分布式 VCS 吗?

git - 如何获取 Jenkins 管道或多分支管道内的 SCM URL?

git - 任何源代码控制系统都可以处理基于每个客户端的分支代码吗?