您也可以使用 HisteditExtension(而不是 MqExtension)。 MqExtension 更强大,但我认为它也更复杂。 HisteditExtension 有点像git rebase --interactive。
# Ordinarily it would be something like (I'd normally do -r -5, instead):
hg histedit d0844102a010
您的文本编辑器将打开一个如下所示的文件:
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
#
每一行对应一个提交。第一个词是指要应用于该提交的命令。默认的“pick”只是保持提交不变。使用“edit”进行更改(包括提交日志更改),使用“fold”将其与之前的提交合并,使用“drop”将其完全删除。
在您的情况下,您可能只需将第一行更改为“编辑”。
请记住,您必须使用 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,直到您熟悉这些命令。