2016-09-27 61 views
1

簡單的問題中間摺疊本地提交: 比方說,我有本地提交下列一樣:汞:如何在堆棧

master -> a -> b -> c 

我想合併a和b。什麼是這個hg命令?我試圖

hg up b 
hg fold -r a 

收到錯誤消息:abort: cannot fold chain not ending with a head or with branching

我試圖

hg up b 
hg amend 

這創造了一個堆棧像

master -> a.preamend -> b -> c 
        \-> a 

不允許我繼續基於C 。最後,我試了

hg up b 
hg histedit a 
abort: can only histedit a changeset together with all its descendants 

沒有運氣。我想是這樣的:

hg up b 
hg *merge* -r a 

回報

master -> b -> c 

提前感謝!

回答

0

如果您想將兩個提交中的更改壓縮到一個提交,那麼您可以使用hg rebase命令來壓縮更改。

$ hg rebase -r a::b -d master --collapse

這將壁球既有的變化和b犯一犯

更多信息請參閱:RebaseExtension

+0

我應該HG更新/結帳B或運行在這之前? – Ender

+0

你必須更新並簽出master分支才能運行此操作,因爲a和b都提交了不需要簽出a或b –

+1

這給出了一個錯誤: 'abort:無法刪除未重新生成的後代的原始更改集。 --keep保持原有的變更)' – Ender

3

關於錯誤信息

此錯誤消息說當您的存儲庫中不允許新的不穩定更改時,會發生abort: cannot fold chain not ending with a head or with branching

不穩定的變化是那些孩子沒有過時的過時變化。您應該在hg config中查找experimental.evolution並將其添加"unstable"

關於摺疊變更

有兩種方式摺疊使用fold在堆棧中提交。

  1. 使用--exact選項:你可以做hg fold -r a -r b --exact。在這裏,你的工作目錄的父母是什麼並不重要。你必須提到要摺疊的修訂版。

  2. 更新到您要修剪的最後一個孩子,在這種情況下,它是b,使用hg update -r b。然後運行hg fold -r a。傳遞給fold的修訂版必須是要摺疊的鏈的初始修訂版。

你有

master -> a -> b -> c

您摺疊ab,他們變得過時,因爲b有一個孩子c這是不是過時了,它是一個不穩定的變更。

所以,你在做什麼並沒有錯,它只是沒有按照您的配置所允許的。