如何撤销在Mercurial中出现的“abort: push creates new remote heads on branch”错误

17
我知道Mercurial初学者:明确的实用指南Mercurial合并分支?(中止:推送创建新的远程分支)这样的答案。
在这里,我不小心创建了一个情况,Mercurial想要创建一个新的远程头。最好的方法是如何撤消这个操作,并在远程端留下很少或没有痕迹的错误?
###> hg push
pushing to http://example.com
searching for changes
abort: push creates new remote heads on branch 'default'!
(did you forget to merge? use push -f to force)

###> hg revert --all -r tip

###> hg update -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

###> hg incoming
comparing with http://example.com
searching for changes
no changes found

###> hg summary
parent: 488:e3db024fe901 tip
 Misc.
branch: default
commit: (clean)
update: 6 new changesets, 2 branch heads (merge)

###> hg pull
pulling from http://example.com
searching for changes
no changes found

###> hg glog
@  changeset:   488:e3db024fe901
|  tag:         tip
|  summary:     Misc.
|
o  changeset:   487:b207579b9d41
|  parent:      480:ce775708800c
|  summary:     Misc.
|
| o  changeset:   486:59a7a5b34c7f
| |  user:        other
| |  summary:     fixes
| |
| o  changeset:   485:b28264333e18
| |  user:        other
| |  summary:     binary

如果我合并,它似乎还可以:
hg merge
abort: outstanding uncommitted merges

但是hg diff显示了我没有进行的各种更改。我愿意重新应用我的更改...如何将所有内容恢复到单个提示,放弃所有本地更改?


hg outgoing 输出的是什么? - Tom
3个回答

11
看起来你在执行 hg merge 后,并没有提交产生的改变。
当你合并另一个分支时(在你的情况下,你可能需要指定 hg merge 486 来合并其他用户的更改),它会将该分支合并到你的工作目录中。然后,你需要使用合并工具检查所有冲突是否已解决(如果有的话),或手动编辑文件(然后在任何冲突上运行 hg resolve)。完成这些操作后,你需要 hg commit 你的新合并的改变集。
这就可以解释为什么 hg diff 显示了很多你没有进行的更改——它们是在另一个分支上进行的更改,你还没有提交。如果你在工作目录中运行 hg summaryhg parents,你应该会看到两个父节点: 486488。你应该对该工作目录进行 hg commit,创建一个新的合并 489
如果你想撤销当前的合并并重新开始,尝试运行 hg update -C,它将把你的工作目录设置回原始(未合并)状态。
如果你想“摆脱”自己的更改(487488——你表示不介意重新应用你的更改),而又不想使用扩展,最简单的方法就是重新克隆该存储库,并从那里继续工作。

7
为了摆脱更改(例如487和488): 如果您像我一样觉得重新克隆存储库是荒谬的,正如上面建议的和官方推荐officially recommended here,那么您应该获取MqExtension
启用Mq后,您可以轻松删除不想要的更改。
hg strip 487
hg strip 488

官方推荐的链接已经失效。 - Adam Parkin

2

我没有执行合并操作,但突然看到了原作者发布的消息。当我执行hg pull时,命令行显示abort !repository default not found


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接