Mercurial:如何修改最后一次提交?
我正在寻找Mercurial中的git commit --amend
的对手部分,即修改我的工作副本链接到的提交的方法。 这个修改程序的要求是:
如果可能的话,它不应该需要任何扩展。 它不能要求非默认的扩展名 ,即没有官方Mercurial安装的扩展名。
如果提交修改是我当前分支的一个负责人,则不应创建新的负责人 。 如果提交不是头,则可能会创建一个新头。
程序应该是安全的,如果出于某种原因修改失败,我希望恢复修改前的工作副本和存储库状态。 换句话说,如果修改本身可能失败,则应该有一个故障安全过程来恢复工作副本和存储库状态。 我指的是修正过程(比如冲突)性质的“失败”,而不是文件系统相关的问题(如访问限制,不能锁定文件以便写入...... )
更新(1):
更新(2):
随着Mercurial 2.2的发布,你可以在hg commit
使用--amend
选项来更新当前工作目录的最后一次提交
从命令行参考:
可以使用--amend标志来修改工作目录的父目录,除了那些当前由hg状态报告的内容(如果有的话)之外,还可以使用包含父项更改的新提交。 旧的提交存储在.hg / strip-backup中的备份包中(请参阅hg help bundle和hg help unbundle以了解如何恢复它)。
除非指定,否则消息,用户和日期取自修改的提交。 当没有在命令行中指定消息时,编辑器将以修改的提交消息打开。
重要的是,这种机制是“安全的”,因为它依赖于相对较新的“阶段”功能来防止更新,这些更新会改变已在本地存储库之外提供的历史记录。
您有3个选项可以编辑Mercurial中的提交:
hg strip --keep --rev -1
撤消最后一次提交,因此您可以再次执行此操作(有关更多信息,请参阅此答案)。
使用Mercurial附带的MQ扩展
即使Mercurial不附带,Histedit扩展也值得一提
您还可以查看Mercurial wiki的编辑历史页面。
简而言之,编辑历史真的很难受,也很沮丧 。 如果您已经推动了您的更改,那么除了您完全控制了所有其他克隆之外,几乎没有任何事情可以做。
我并不十分熟悉git commit --amend
命令,但AFAIK,Histedit似乎是最接近的方法,但遗憾的是它没有与Mercurial一起发货。 MQ的使用真的非常复杂,但你几乎可以做任何事情。
相当于hg commit --amend
GUI hg commit --amend
:
这也适用于TortoiseHG的GUI(我使用v2.5):
切换到“提交”视图,或者在工作台视图中选择“工作目录”条目。 'Commit'按钮有一个名为'Amend current revision'的选项(点击按钮的下拉箭头查找它)。
||
||
/
注意事项 :
只有当mercurial版本至少为2.2.0,并且如果当前修订版未公开,这个额外选项才会启用,不是补丁程序,也没有子项。 [...]
单击该按钮将会调用'commit --amend'来修改修订版本。
有关THG开发通道的更多信息
链接地址: http://www.djcxy.com/p/6409.html