意想不到的新头创建
Unexpected new head created
我正在与 Hg 和 TortoiseHg 合作进行一个项目,每隔几天将其推送到 Bitbucket 上的一个远程仓库。当我今天尝试推送更改时,出现错误提示说我正在尝试创建一个新头像。我觉得这很奇怪,因为我绝对是唯一一个从事该项目的人,而且我在一台 PC 上工作。
我拉动查看远程仓库发生了什么,拉动本地仓库树后如下所示:
在 bitbucket 端,回购看起来像这样:
谁能帮我理解为什么只有我一个人在做这个项目,为什么我有两个头,为什么 Hg 不承认 Rev.40 和 Rev.36 是同一个修订版?
我现在该如何解决这个问题?如果我在本地删除 40,当我尝试将更改推送到远程仓库时会发生什么?它也会删除远程仓库中的修订版吗?
由于提交 r40 仅存在于本地,因此将其从本地存储库中删除没有任何缺点 - 如果您确定它不包含您想要保留的更改。它不会传播到您的 bitbucket 存储库。
然而,这两个提交在回购的意义上不相同 - 它们可能至少有一个小的时间差异(如果不是某些内容,例如白色 space) - 因此它们是独一无二的;只有你知道它们是如何形成的。
你可以试试这个(如果你想确定的话,可以在克隆回购上)
有一个干净的 workgin 目录
hg co 40
hg backout -r 40
hg merge 39
hg push
revision 40
将是远程仓库中存在的版本,在修改之前
所以,你检查它,你退出它(把逆放在它上面)然后你合并你正在进行的工作(留在39
)并且根本不应该有合并冲突,因为所有的变化都是传入的
然后,当满意时,你推
===
why I got two heads
这部分已经在评论中解决了,你意识到你在推送之后修改了提交,因此它明显是重复的
How do I fix this now?
你在你的本地仓库上做了一个合并,摆脱了两个头,所以只有一个远程仓库不会抱怨它
如果你愿意,你可以 backout 修改前的提交是安全的(或者不是,如果你真的知道如何合并冲突使你的本地占上风)
但在这两种情况下,未修改的提交都会保留下来,因此它会出现在你的历史记录中,当心
If I strip 40 locally, what will happen when I try to push changes to the remote repo?
会在那里,除非你在那里删除它(直接在远程仓库上)
Will it strip the revision at the remote repo too?
不,不会
我正在与 Hg 和 TortoiseHg 合作进行一个项目,每隔几天将其推送到 Bitbucket 上的一个远程仓库。当我今天尝试推送更改时,出现错误提示说我正在尝试创建一个新头像。我觉得这很奇怪,因为我绝对是唯一一个从事该项目的人,而且我在一台 PC 上工作。
我拉动查看远程仓库发生了什么,拉动本地仓库树后如下所示:
在 bitbucket 端,回购看起来像这样:
谁能帮我理解为什么只有我一个人在做这个项目,为什么我有两个头,为什么 Hg 不承认 Rev.40 和 Rev.36 是同一个修订版?
我现在该如何解决这个问题?如果我在本地删除 40,当我尝试将更改推送到远程仓库时会发生什么?它也会删除远程仓库中的修订版吗?
由于提交 r40 仅存在于本地,因此将其从本地存储库中删除没有任何缺点 - 如果您确定它不包含您想要保留的更改。它不会传播到您的 bitbucket 存储库。
然而,这两个提交在回购的意义上不相同 - 它们可能至少有一个小的时间差异(如果不是某些内容,例如白色 space) - 因此它们是独一无二的;只有你知道它们是如何形成的。
你可以试试这个(如果你想确定的话,可以在克隆回购上)
有一个干净的 workgin 目录
hg co 40
hg backout -r 40
hg merge 39
hg push
revision 40
将是远程仓库中存在的版本,在修改之前
所以,你检查它,你退出它(把逆放在它上面)然后你合并你正在进行的工作(留在39
)并且根本不应该有合并冲突,因为所有的变化都是传入的
然后,当满意时,你推
===
why I got two heads
这部分已经在评论中解决了,你意识到你在推送之后修改了提交,因此它明显是重复的
How do I fix this now?
你在你的本地仓库上做了一个合并,摆脱了两个头,所以只有一个远程仓库不会抱怨它 如果你愿意,你可以 backout 修改前的提交是安全的(或者不是,如果你真的知道如何合并冲突使你的本地占上风) 但在这两种情况下,未修改的提交都会保留下来,因此它会出现在你的历史记录中,当心
If I strip 40 locally, what will happen when I try to push changes to the remote repo?
会在那里,除非你在那里删除它(直接在远程仓库上)
Will it strip the revision at the remote repo too?
不,不会