【问题标题】:How to undo the effects of one commit in Mercurial, while keeping succesive commits?如何在 Mercurial 中撤消一次提交的影响,同时保持连续提交?
【发布时间】:2026-01-07 01:15:02
【问题描述】:

在开发一个 Web 应用程序时,我在一次提交中做了一个微小的更改,然后继续进行。今天我的回购已经走得很远了。我想撤消在该特定提交中所做的更改,同时保留在后续提交中所做的更改。

如何在 Mercurial 中执行此操作?

示例:假设在提交 96 中,我将一个布尔变量从 true 更改为 false。

今天我的存储库是 Rev 678。我只想撤消提交 96 中所做的更改。

我该怎么做?

【问题讨论】:

  • 正如@LazyBadger 提到的backout 是您正在寻找的。​​span>

标签: version-control mercurial commit undo


【解决方案1】:
  • 使用hg strip|hg histedit 删除变更集(历史记录中的-1 个变更集)

  • 使用hg backout 撤销变更集(历史记录中+1 变更集,撤消来自错误变更集的变更)

【讨论】:

  • 退出是更好的答案。如果其他人正在使用存储库,则 strip 和 histedit 将不起作用,您将在下次拉取时取回变更集(除非您正在使用变更集演化,但您没有使用)。坚持hg backout