我目前正在使用TortoiseHg (Mercurial),不小心提交了一个错误的提交消息。如何在存储库中编辑这条提交消息?
当前回答
好消息:hg 2.2刚刚增加了git的修改选项。
在tortoiseHg中,你可以通过选择提交按钮右侧的黑色箭头来使用“修改当前修订”
其他回答
更新:Mercurial增加了-修正,现在应该是首选的选项。
您可以使用hg回滚回滚上一次提交(但只能是最后一次),然后重新应用它。
重要的是:这将永久地删除最新的提交(或拉取)。所以如果你做了hg更新,commit不再在你的工作目录中,那么它就永远消失了。所以先复制一份。
除此之外,您不能更改存储库的历史记录(包括提交消息),因为其中的所有内容都是校验和的。您唯一能做的就是在给定的变更集之后修剪历史记录,然后相应地重新创建它。
如果您已经发布了您的更改(除非您可以获得所有的副本),这些都将不起作用,并且您也不能“重写历史”,包括gpg签名提交(由其他人)。
我知道这是一个老帖子,你把问题标记为答案。我正在寻找同样的事情最近,我发现histedit扩展非常有用。这个过程解释如下:
http://knowledgestockpile.blogspot.com/2010/12/changing-commit-message-of-revision-in.html
上面讨论的一个小宝石-感谢@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
我以前是这么做的:
想象一下,您有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绑定