2013-04-05 61 views
16

我知道Mercurial for Beginners: The Definitive Practical Guide和答案一样Mercurial merge branches? (abort: push creates new remote branches)如何撤消“中止:推分支创建新的远程头”在善变

在这里,我无意间创造了哪里水银想创建一个新的远程头的情况。解决这个问题的最好方法是什么,并且在远程方面对这个错误留下很少或没有任何痕迹?

###> 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 

如果我合并,它的排序似乎OK:

hg merge 
abort: outstanding uncommitted merges 

hg diff显示各种变化我没有做的。我愿意重新应用我的更改......我如何将这一切都带回单一提示,放弃所有本地更改?

+0

hg输出输出是什么? – Tom 2013-04-05 22:46:29

回答

10

看起来您已完成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 
+0

正式推荐的链接已经死亡。 – 2016-07-14 19:04:14

+1

已更新指向新的mercurial文档站点的链接 – 2016-07-14 19:12:12

2

我没有合并,但突然间我正在查看操作员发布的消息。当我做hg pull,在命令行中显示abort!repository默认没有找到