小编典典

Mercurial:如何修改最后一次提交?

all

我正在寻找git commit --amendMercurial
的对应部分,即一种修改我的工作副本链接到的提交的方法。我只对最后一次提交感兴趣,而不是任意的早期提交。

此修订程序的要求是:

  • 如果可能,它不应该需要任何扩展。它 不能要求非默认扩展 ,即不附带官方 Mercurial 安装的扩展。

  • 如果要修改的提交是我当前分支的一个负责人,则不应创建 新负责人。 如果提交不是 head,则可能会创建一个新的 head。

  • 该过程应该是 安全 的,如果由于某种原因修改失败,我希望恢复与修改前相同的工作副本和存储库状态。换句话说,如果修改本身可能失败,则应该有一个故障安全程序来恢复工作副本和存储库状态。我指的是修正程序性质的“故障”(例如冲突),而不是与文件系统相关的问题(例如访问限制,无法锁定文件以进行写入,… )

更新(1):

  • 该过程必须是可 自动化 的,因此它可以由 GUI 客户端执行,而无需任何用户交互。

更新(2):

  • 不得触摸工作目录中的文件(某些修改的文件可能存在文件系统锁定)。这尤其意味着,一种可能的方法可能在任何时候都不需要干净的工作目录。

阅读 62

收藏
2022-06-16

共1个答案

小编典典

随着Mercurial 2.2的发布,您可以使用--amend选项
withhg commit将最后一次提交更新为当前工作目录

从命令行参考

--amend 标志可用于使用新提交修改工作目录的父级,该提交包含父级中的更改,以及当前由 hg status
报告的更改(如果有的话)。旧的提交存储在 .hg/strip-backup 的备份包中(参见 hg help bundle 和 hg help
unbundle 了解如何恢复它)。

除非另有说明,否则消息、用户和日期取自修改后的提交。当命令行中未指定消息时,编辑器将打开修改提交的消息。

很棒的是,这种机制是“安全的”,因为它依赖于相对较新的“阶段”功能来防止更新会改变已经在本地存储库之外提供的历史记录。

2022-06-16