在脏工作副本上使用 hg commit --amend 仅修改注释

Using hg commit --amend on dirty working copy to amend only the comment

现代 Mercurial 版本允许 hg commit --amend 之前的提交。

刚才我也想这样做,但是专门调整了上一次提交的提交消息,而我的工作副本已经被额外的编辑弄脏了。所以我尝试了:

hg commit --amend --

遵循 GNU 参数约定(-- 结束选项列表,之后的所有内容都是 file/path 名称),试图传递一个空的文件列表。

然而,据我所知,这仍然提交了所有最新的编辑以及提交评论更改。当提示我编辑我之前的提交消息时,编辑器中看不到它,因为我一直在编辑之前提交修改的相同文件。

有没有办法只修改上一次提交的注释,而无需同时提交工作副本中的文件更改?

(为了澄清,我正在寻找一些简洁的命令,我知道我可以 shelve 我的更改,然后在修改评论后将它们从架子上拿回来。)

以下应该有效:

hg commit --amend -e -X .

如果您使用的是 evolve 扩展,还有更短的形式:

hg amend -e -X .

-X .选项将排除所有文件被提交; -e 强制编辑评论(否则您将收到 "nothing changed" 错误消息)。