2013-04-05 29 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默認沒有找到