我正在寻找git commit --amendMercurial 的对应部分,即一种修改我的工作副本链接到的提交的方法。我只对最后一次提交感兴趣,而不是任意的早期提交。
git commit --amend
此修订程序的要求是:
如果可能,它不应该需要任何扩展。它 不能要求非默认扩展 ,即不附带官方 Mercurial 安装的扩展。
如果要修改的提交是我当前分支的一个负责人,则不应创建 新负责人。 如果提交不是 head,则可能会创建一个新的 head。
该过程应该是 安全 的,如果由于某种原因修改失败,我希望恢复与修改前相同的工作副本和存储库状态。换句话说,如果修改本身可能失败,则应该有一个故障安全程序来恢复工作副本和存储库状态。我指的是修正程序性质的“故障”(例如冲突),而不是与文件系统相关的问题(例如访问限制,无法锁定文件以进行写入,… )
更新(1):
更新(2):
随着Mercurial 2.2的发布,您可以使用--amend选项 withhg commit将最后一次提交更新为当前工作目录
--amend
hg commit
从命令行参考:
--amend 标志可用于使用新提交修改工作目录的父级,该提交包含父级中的更改,以及当前由 hg status 报告的更改(如果有的话)。旧的提交存储在 .hg/strip-backup 的备份包中(参见 hg help bundle 和 hg help unbundle 了解如何恢复它)。 除非另有说明,否则消息、用户和日期取自修改后的提交。当命令行中未指定消息时,编辑器将打开修改提交的消息。
--amend 标志可用于使用新提交修改工作目录的父级,该提交包含父级中的更改,以及当前由 hg status 报告的更改(如果有的话)。旧的提交存储在 .hg/strip-backup 的备份包中(参见 hg help bundle 和 hg help unbundle 了解如何恢复它)。
除非另有说明,否则消息、用户和日期取自修改后的提交。当命令行中未指定消息时,编辑器将打开修改提交的消息。
很棒的是,这种机制是“安全的”,因为它依赖于相对较新的“阶段”功能来防止更新会改变已经在本地存储库之外提供的历史记录。