我在 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/