删除 TortoiseHG 中的修订版

Remove a revision in TortoiseHG

我知道这个 question 已经有人问过,我知道这违反了版本控制。但我们在布局等方面做了一些小改动,并希望删除 30 次修订的历史记录。

是否可以只删除这 30 个修订版或将它们合并为一个修订版?

好像 160 是最后一个大的,然后现在我们在 195,但介于两者之间的 35 都是相对较小的 css 变化,所以对我们来说并不是真正必要的。是否可以让他们像 161 一样然后从那里离开?

如果要删除修订 及其所有后代 ,只需启用 strip 扩展,然后右键单击 -> 修改历史 -> 删除变更集。

如果您想将它们折叠在一起,并且您还没有推过,您可以这样做:

  1. 在 TortiseHG 的设置中启用 histedit 扩展。
  2. 使用终端按钮打开终端。
  3. 键入 hg histedit 160 并按回车键。将 160 替换为适当的修订号。这部分可能需要几秒钟,所以如果终端似乎冻结,请不要惊慌。
  4. 文本编辑器 window 将打开,其中列出了自 160 以来所做的更改。将要合并的每一行前面的文本从 pick 更改为 fold,更改为将该变更集与其上方的变更集结合起来。每次折叠后,系统还会提示您编辑提交消息。您可以使用 drop 删除变更集而不是折叠它们。

如果推送过,修改历史比较复杂;有关详细信息,请参阅 hg phases

我发现使用 hg revert -r REV 比使用 histedit 更容易。

如果您已经推送了更改,请不要执行此操作。

观察正在合并的变更集都是 'draft' 个阶段。

  1. 更新到您要折叠的更改集中第一个更改集的父项。

  1. "hg revert -r REV -all"(其中 rev 是您要折叠的最后一个更改)(即提示 - 如果不是提示,则您必须在第 3 步和第 4 步之间执行变基步骤)。

  1. 承诺。

  1. 使用 strip 删除旧的变更集

最终结果:

如果能够直接从 thg gui 执行第 2 步,那就太好了,但我还没有找到执行此操作的方法。