2011-09-29 51 views
3

我的問題與Mercurial move changes to a new branch類似,但並不完全相同。在Mercurial中移動分支開始

我的一位同事開始研究一個新功能併發布了一些本地提交。然後他注意到「哦,那應該進入一個命名分支」,從而創建一個。問題是,以前的承諾應該已經在那個分支。因此,簡化歷史,現在看起來有點像這樣:

O 7: default 
| 
O 6: default 
| 
| O 5: newbranch 
| | 
| O 4: default 
| | 
| O 3: default 
|/
O 2: default 
| 
O 1: default 

所以默認現在有兩個開放的頭:7和4。我想擺脫開頭4,但當然仍然有3當我們合併newbranch回到主(現在合併是不受歡迎的,因爲它會帶來默認,我們不想要那裏),所以我們合併回主「10」默認

問題是:處理這個問題的最佳方法是什麼?

做一個--close-branch 5,創建一個新的分支2並重新申請修訂3-5?

據我所知,沒有什麼好的方法可以簡單地說「newbranch從3開始而不是5」

更新:由於這已被其他人拉,我不想重新修訂有問題的修訂。強制同事重建/開關分支將是美好的,因爲這會影響只有一個人,而不是5

+0

不是一個編程問題,是嗎? – jv42

+2

@ jv42:是的,它100%是。查看常見問題。 – VonC

+0

@VonC mmm,好的,自從我自己的工具問題被拒之門外後,這一定已經發生了變化。 – jv42

回答

3

爲了擺脫多餘的默認頭,你可以:

hg update -r 4 
hg commit --close-branch -m "Closed extra default head. The changes from this branch will be merged along with 'newbranch', once it is complete." 

當你最終合併newbranch ,它將包含修訂版本3-5以及您在5之上提交的任何其他內容。

唯一的潛在問題是修訂版本3-4不會被標記爲指定分支的一部分。如果這對你真的很重要,那麼你應該關閉額外的默認頭和newbranch頭,並重新開始以修訂版本2爲根的新分支。

+0

剛剛嘗試過一個小測試存儲庫,這實際上完全是我想要的。一旦我想到它(並在MacHG圖中看到它),這是完全合理的。謝謝 ! – DarkDust