您也可以使用HisteditExtension(而不是MqExtension)。 MqExtension功能更強大,但我認爲它也複雜得多。 HisteditExtension有點像git rebase --interactive
。
pick d0844102a010 A
pick a9448f0ba534 B
pick b754f9f2513b C
pick 736f7f2363ff D
pick 05bb58f48597 E
# Edit history between d0844102a010 and 05bb58f48597
#
# Commands:
# p, pick = use commit
# e, edit = use commit, but stop for amending
# f, fold = use commit, but fold into previous commit
# d, drop = remove commit from history
#
每條線路均對應一個承諾:
# Ordinarily it would be something like (I'd normally do -r -5, instead):
hg histedit d0844102a010
你的文本編輯器將用看起來是這樣的文件被打開。第一個單詞是指要應用於該提交的命令。默認的「pick」只是保持提交,保持不變。使用「編輯」進行更改(包括提交日誌更改),「摺疊」將其與前一個提交相結合,「刪除」將其完全刪除。
就你而言,你可能只需要將第一行更改爲「編輯」即可。
請記住,你必須使用的hg histedit --continue
代替hg commit
(如果你是「編輯」,或者如果有一個合併衝突)。 :)如果你遇到衝突,並且事情看起來不太好,你只想取消,那麼你可以使用hg histedit --abort
。
# Fix up files...
vim foo bar baz
# Finished; apply the changes (and pray for a clean merge ;).
hg histedit --continue
當然,自己承擔編輯歷史的風險。我建議您在編輯歷史記錄之前創建源樹的備份tarball或zip,直到熟悉這些命令爲止。
如果變化不是很大,我可能只是手動撤消它,然後檢入新版本F.如果這是一個很大的變化,那麼你得到了我。我剛開始使用mercurial,所以我也會對這個答案感興趣! – DarinH 2011-04-05 18:11:32