我正在与Hg和TortoiseHg合作进行一个项目,并将每两天推送到Bitbucket的远程回购中。今天当我尝试推动更改时,出现一个错误,说我正在尝试创建一个新的机头。我认为这很奇怪,因为我绝对是唯一从事此项目的人,而且我使用一台PC进行工作。

我拉动看看远程回购上发生了什么,拉出本地回购树后看起来像这样:



在bitbucket端,仓库如下所示:



有人可以帮助我理解为什么我是唯一负责该项目的人,但我为什么只有两个脑袋?为什么Hg无法识别Rev.40和Rev.36是同一版本?

我现在该如何解决?如果我在本地剥离40,当我尝试将更改推送到远程仓库时会发生什么?也会在远程仓库中删除修订吗?

最佳答案

您可以尝试执行此操作(如果愿意,可以在克隆存储库上尝试)

拥有一个干净的workgin目录

hg co 40
hg backout -r 40
hg merge 39
hg push


修订版40将是修订之前存在于远程仓库中的版本
因此,您将其签出,将其退回(放在其顶上),然后合并正在进行的工作(位于39处),因为所有更改都已传入,因此根本不应该存在合并冲突。
然后,当您满意时,

===


为什么我有两个头


注释中已经解决了这一部分,您意识到您在推送后修改了提交,因此显然是重复的


我现在该如何解决?


您对本地存储库进行合并以摆脱两个头,因此只有一个远程存储库不会对此抱怨
如果愿意,可以backout进行修订前提交以确保安全(或者,如果您真的知道如何合并使当地人占优势的冲突,则可以不这样做)
但是在这两种情况下,未经修改的提交都可以保留,因此请注意,它会显示在您的历史记录中


如果我在本地剥离40,当我尝试将更改推送到远程仓库时会发生什么?


会在那里,除非您将其剥离(直接在远程仓库上)


也会在远程仓库中删除修订吗?


不,不会

09-04 17:33
查看更多