2013-01-22 45 views
0

我剛開始使用hg Mercurial存儲庫,並陷入了多個頭的情況。我過去把我的代碼推到了存儲庫中,但也從當前代碼中將其丟失了。在我看來,每當其他人推送他的代碼時,我的默認人數就會增加,但在其他人的機器上我看不到這種行爲。任何機構都可以幫助解決這個問題,我怎麼能擺脫這些頭,不會失去我的推動力?擺脫水銀多頭HEADS

注意:我在使用MAC OSX和eclipse mercurial插件。

回答

3

據我現在理解你的問題,你推到一個存儲庫,並有其他人使用相同的存儲庫。正確?

對我來說,似乎你沒有在最新的提交工作,因此多個頭在您當前的分支上創建。另外請注意:Mercurial的頭部和分支之間有一些區別。

我能想象這樣的事情發生在你身上(假設我們正在努力只有一個分支):

的工作副本:

1-2-3-4-5-6 (where number is revision) 

所以您提交的r6,例如兩次提交7'8'
現在你的工作副本是這樣的:

1-2-3-4-5-6-7'-8' 

但是在此期間共享倉庫你們都推到/從外觀拉這樣的:

1-2-3-4-5-6-7-8-9-10 (so r10 is the 'latest' commit published) 

現在,如果你是推到共享資源庫,出現這種情況:

  7'-8' 
     /
1-2-3-4-5-6-7-8-9-10 

瞧,現在有兩個不同的頭,叫8'10

未來,首先從共享存儲庫中提取並更新最新提交將會阻止您解決此問題。

現在,因爲你的問題是如何解決多個頭,有不同的選擇,最容易的是你正在做一個簡單的合併。

hg help merge 

根據是否有頭是唯一的本地(看看你的頭的phase /提交),你有更多的(或許更優雅)選項,例如rebasing

一般來說,this是一個很好的入門/深入Mercurial的資源。

2

已經給出了一些很好的一般信息,但我會給出一些MercurialEclipse的具體信息。

  • 理解水銀的關鍵是歷史圖。 (在導航器視圖中右鍵單擊並選擇團隊 - >顯示歷史記錄)。請注意圖中的左列。在您提交之後比較圖表之後的圖表與提交之前的圖表。在拉動之前,還要比較圖形與拉動後的形狀。
  • 在Mercurial提交變更集並不意味着其他人可以看到它。其他人只能看到推送的更改集
  • 一般來說,要解決這種情況,您應該合併所有頭(團隊 - >合併),然後推送新的單頭。
  • 一旦你回單頭一個人的工作流程應該
    • 同步之前提交更改
    • 右鍵單擊項目 - >團隊 - >同步
    • 在同步視圖中右鍵單擊輸入節點上並選擇Pull and Update。然後這會提示您合併傳入的更改
    • 當您準備推送更改(您應該有一個頭並且沒有任何傳入)時,可以通過右鍵單擊傳出節點在同步視圖中執行此操作。推動變更集推動所有祖先。