我正在与Hg和TortoiseHg合作开发一个项目,并且每隔几天就会推送到Bitbucket的远程仓库。当我今天尝试推动更改时,我收到一条错误消息,说我正在尝试创建一个新头。我觉得这很奇怪,因为我绝对是唯一从事该项目的人,而且我在一台PC上工作。
我拉着看远程仓库上发生的事情,然后拉出当地的回购树就像这样:
在bitbucket结束时,repo看起来像这样:
有人可以帮助我理解为什么我有两个脑袋,如果我是唯一一个参与该项目的人,以及为什么Hg没有认识到Rev.40和Rev.36是同一版本?
我现在如何解决这个问题?如果我在本地删除40,当我尝试将更改推送到远程仓库时会发生什么?它会剥离远程仓库的修订吗?
答案 0 :(得分:0)
由于提交r40仅在本地存在,因此从本地存储库中删除它没有任何缺点 - 如果您确定它不包含您想要保留的更改。它当时不会传播到你的bitbucket repo。
然而,两个提交在回购意义上不相同 - 它们可能至少有一点差异(如果不是某些内容,例如空格) - 因此它们是独特;只有你能说出它们是如何形成的。
答案 1 :(得分:0)
你可以尝试这个(如果你愿意,可以在克隆回购上)
拥有干净的工作目录
hg co 40
hg backout -r 40
hg merge 39
hg push
在修订之前,版本40
将是远程仓库中存在的版本
所以,你检查一下,你把它退出(把它倒在它上面)然后你合并你正在进行的工作(在39
左边)并且根本不应该有合并冲突,因为所有的变化都是传入的
然后,当满意时,你推
===
为什么我有两个脑袋
这部分已经在评论中得到解决,你意识到你在推送后修改了提交,因此明显重复了它
我现在如何解决这个问题?
你在本地仓库进行合并,以摆脱两个头,所以只有一个远程回购不会抱怨它 如果你愿意,你可以backout修改前的提交是安全的(或者,如果你真的知道如何合并冲突,使你的当地占上风) 但在这两种情况下,未经修改的提交都会存活,因此它会出现在您的历史中,请注意
如果我在本地删除40,当我尝试将更改推送到远程仓库时会发生什么?
除非你把它剥离(直接在遥控器上),否则它会在那里
它会剥离远程仓库的修订吗?
不,它不会