我目前正在使用TortoiseHg (Mercurial),不小心提交了一个错误的提交消息。如何在存储库中编辑这条提交消息?
当前回答
In TortoiseHg, right-click on the revision you want to modify. Choose Modify History->Import MQ. That will convert all the revisions up to and including the selected revision from Mercurial changesets into Mercurial Queue patches. Select the Patch you want to modify the message for, and it should automatically change the screen to the MQ editor. Edit the message which is in the middle of the screen, then click QRefresh. Finally, right click on the patch and choose Modify History->Finish Patch, which will convert it from a patch back into a change set.
哦,这里假设MQ是这个存储库上TortoiseHG的活动扩展。如果没有,您应该能够单击File->Settings,单击Extensions,然后单击mq复选框。它应该警告你,你必须关闭TortoiseHg之前的扩展是活跃的,所以关闭并重新开放。
其他回答
更新:Mercurial增加了-修正,现在应该是首选的选项。
您可以使用hg回滚回滚上一次提交(但只能是最后一次),然后重新应用它。
重要的是:这将永久地删除最新的提交(或拉取)。所以如果你做了hg更新,commit不再在你的工作目录中,那么它就永远消失了。所以先复制一份。
除此之外,您不能更改存储库的历史记录(包括提交消息),因为其中的所有内容都是校验和的。您唯一能做的就是在给定的变更集之后修剪历史记录,然后相应地重新创建它。
如果您已经发布了您的更改(除非您可以获得所有的副本),这些都将不起作用,并且您也不能“重写历史”,包括gpg签名提交(由其他人)。
上面讨论的一个小宝石-感谢@Codest和@Kevin Pullin。 在TortoiseHg中,在提交按钮旁边有一个下拉选项。选择“修正当前修订”会带回注释和文件列表。所以有用。
使用MQ扩展和调试命令还有另一种方法。这是在不丢失数据的情况下修改历史记录的一种通用方法。让我假设和安东尼奥的情况一样。
// set current tip to rev 497
hg debugsetparents 497
hg debugrebuildstate
// hg add/remove if needed
hg commit
hg strip [-n] 498
好消息:hg 2.2刚刚增加了git的修改选项。
在tortoiseHg中,你可以通过选择提交按钮右侧的黑色箭头来使用“修改当前修订”
我以前是这么做的:
想象一下,您有500个提交,错误的提交消息在r.498中。
hg qimport -r 498:tip
hg qpop -a
joe .hg/patches/498.diff
(change the comment, after the mercurial header)
hg qpush -a
hg qdelete -r qbase:qtip
推荐文章
- 多久向源代码控制提交一次更改?
- 如何修改旧Git提交?
- 如何处理11000行c++源文件?
- 删除git中的分支是否会将其从历史记录中删除?
- 如何做Mercurial的'hg删除'所有丢失的文件?
- "ERROR:root:code for hash md5 was not found"当使用任何hg mercurial命令时
- Mercurial初学者:最终实用指南
- 什么是跟踪分支?
- Git -合并时跳过特定的提交
- 为什么3路合并比2路合并更有利?
- 如何正确地关闭一个功能分支在Mercurial?
- 如何预览git-pull?
- Git:如何将数据库重置为特定的提交?
- 忽略已经签入目录的内容?
- 如何完全删除TFS绑定