我目前正在使用TortoiseHg (Mercurial),不小心提交了一个错误的提交消息。如何在存储库中编辑这条提交消息?


当前回答

我是这样做的。首先,不要强迫你的改变,否则你就不走运了。抓取并安装崩溃扩展。提交另一个虚拟变更集。然后使用折叠将前两个更改集合并为一个。它将提示您输入一条新的提交消息,为您提供您已经拥有的作为起点的消息。您已经有效地更改了原来的提交消息。

其他回答

我知道这是一个老帖子,你把问题标记为答案。我正在寻找同样的事情最近,我发现histedit扩展非常有用。这个过程解释如下:

http://knowledgestockpile.blogspot.com/2010/12/changing-commit-message-of-revision-in.html

回滚-重新应用是一个非常简单的解决方案,但它只对最后一次提交有帮助。Mercurial Queues功能强大得多(注意,为了使用“hg q*”命令,您需要启用Mercurial Queues Extension)。

我是这样做的。首先,不要强迫你的改变,否则你就不走运了。抓取并安装崩溃扩展。提交另一个虚拟变更集。然后使用折叠将前两个更改集合并为一个。它将提示您输入一条新的提交消息,为您提供您已经拥有的作为起点的消息。您已经有效地更改了原来的提交消息。

好消息:hg 2.2刚刚增加了git的修改选项。

在tortoiseHg中,你可以通过选择提交按钮右侧的黑色箭头来使用“修改当前修订”

编辑:正如用户指出的那样,不要使用MQ,而是使用提交—修改。这个答案现在大多具有历史意义。

正如其他人所提到的,MQ扩展更适合此任务,并且您不会冒破坏工作的风险。这样做:

启用MQ扩展,在hgrc中添加如下内容: (扩展) mq = 更新到您想要编辑的变更集,通常提示: Hg上升$rev 将当前的变更集导入队列: Hg qimport -r。 刷新补丁,编辑提交消息: Hg qrefresh -e 完成所有应用的补丁(在本例中是一个),并将它们存储为常规更改集: Hg qfinish a

我不熟悉TortoiseHg,但是命令应该与上面的类似。我还认为值得一提的是,编辑历史是有风险的;只有在您绝对确定更改集没有被推送到其他地方或从其他地方拉出时,才应该这样做。