2014-07-11 29 views
0

我正在使用BRANCH_A。我想將這個分支上的最後50個提交移動到一個新的分支BRANCH_B,並在這之前將BRANCH_A恢復到之前的提交。實現這一目標的最佳方法是什麼?這是一個好方法嗎?重命名hg分支並移植選擇性更改

+0

「恢復到先前的承諾之前,這些」 ** **需要翻譯成正確的(相關的和有意義的)措辭 –

回答

0

假設你只是想BRANCH_A是在「HEAD - 50個提交」的狀態,如果這些提交出現在歷史上你不關心,那麼這裏有一個簡單的解決辦法:

對於具備全部犯下的一個新的分支BRANCH_B,你可以簡單地創建這個分支,而在BRANCH_A的HEAD:

$ hg branch BRANCH_B 

有關BRANCH_A恢復以前的狀態,你可以切換回BRANCH_A的HEAD,並提交一個新的變更即會撤消所有你不想要的,這是用hg退出:

$ hg update BRANCH_A 
$ hg log -r 'branch(BRANCH_A) and head()~50 and not merge()' 
$ hg backout -r 'branch(BRANCH_A) and head()~50 and not merge()' 
$ hg commit -m"removed from .. to .." 

如果在類似區域發生更改,則可能會發生衝突。

如果您確實想要重寫歷史記錄,您可以使用rebase或轉換擴展名來更改名稱,刪除提交等。這一切都取決於您是僅在本地工作還是需要推送到使用的服務器由其他人也是如此(在這種情況下,不建議重寫歷史記錄)。

+0

順便說一句,你的命令集是錯誤的(3/5)爲OP的任務 –

0

沒有編輯歷史,簡單地說:

  1. 關閉BRANCH_A一角。
  2. 在BRANCH_A的封閉式尖端上創建一個名爲BRANCH_B。
  3. 在50次提交之前從節點開始檢入新的提交到BRANCH_A。

TortoiseHg image of the idea, with one commit representing the "50"

相關問題