2013-01-21 74 views
3

我是新來的mercurial.I已經推錯了一些文件,它顯示爲不同的頭在主存儲庫。 誰能告訴我如何刪除該頭。如何刪除多個頭在mercurial

非常感謝您

+0

如果你真的不想要一個本地分支,你可以選擇刪除並再次克隆,請參閱#3此處https://www.mercurial-scm.org/wiki/PruningDeadBranches – KCD

回答

5

我不認爲你實際上想要刪除頭像。如果你這樣做,你會失去在這些分支中完成的工作。

您可能想要將頭部合併回一個分支。

說,你有這樣的樹:

o 4 : Head 1 
| 
o 3 : Another commit 
| 
| o 2 : Head 2 
| | 
|/ 
o 1 : A commit 
| 
o 0 : Initial commit 

爲了擺脫額外的頭部,而不會丟失其中包含的工作,你會合並兩個頭(修訂版2和4在這個例子中)喜歡此:

hg update 4 
hg merge 2 
hg commit -m "Merge" 

這將創建另一個提交其具有修訂2,3和4在一個單一的頭部這樣所有的變化:

o  5: Merge 
|\ 
o | 4 : Head 1 
| | 
o | 3 : Another commit 
| | 
| o 2 : Head 2 
| | 
|/ 
o  1 : A commit 
| 
o  0 : Initial commit 

這是多個開發人員在同一個存儲庫上工作時的標準過程。

+0

我試圖合併,當我合併時,有3個不同的來源在其他3個頭部。所以很難合併。其他重要的是,當我'推'(我認爲沒有運行'pull'命令)創建了一個新的head.so,如果我有本地變化(備份),我可以刪除新的頭,而不會損壞其他頭? –

+0

您不能刪除已經推送的提交。此外,您不應通過推送更改來創建新的頭像。推動應該失敗,如果它會創造一個新的頭。你用'hg push -f'強制推送?你不應該那樣做,因爲它不能完全防止這個問題。 –

+0

另外,你不合並四個頭,你重複合併兩個頭,直到只剩下一個頭。合併衝突需要處理,您應該頻繁地進行合併/推送以使其更容易。 –

7

您可以啓用「MQ」擴展​​通過編輯.hgrc文件。 確保以下行出現:

[extensions] 
mq = 

之後,您可以「帶」就是刪除它,這樣你只有一個頭特定修訂:

hg strip ... 
+0

辦理入住後4 ppl,4所以,我可以使用標題ID刪除1個標題: –

+0

是的,您可以使用'-r'參數指定要刪除的修訂號。 – Robert

+0

@羅伯特:他說他被推了。剝離公共變更集不會有幫助。 –