如何从Mercurial存储库中删除变更集?

我在2048年有一个中央回购的克隆。我想删除我当地回购的最后10个变更集,就好像我两周前回来了。 我想我可以删除我的本地回购,并做"hg clone -rev 2038"但这将是漫长的(克隆回购需要几分钟)。 有没有办法只是“取消”一些变更?

笔记:

  • 我没有试图退出变更集。 我最终将再次从中央回购中收回这些变更集。
  • 我不想将工作目录更新到早期版本; 我真的想影响存储库。
  • 我目前的回购和工作目录中没有任何外出的变更集或正在进行的修改。

使用strip命令:

 hg strip -r 2039 

该命令由StripExtension提供。 它是作为Mercurial 2.8和更高版本的一部分发布的,但是您需要首先启用它。 在Mercurial 2.8之前,它是MqExtension的一部分。

为防止意外销毁历史logging,命令将在.hg/strip-backup/生成一个备份包,如果需要,可以再次解包。

克隆你当地的回购应该是快速的。 我假设“几分钟”是指一个远程回购?

你可以使用hg clone <local repo> <new repo> -r <revision>来只克隆到某个版本。

要删除已经提交和推送的变更集,请使用:

  hg退出-r(更改集编号)

要删除已提交但未被推送的变更集,请使用:

   hg strip -r(更改集编号)

如果你需要启用MQ扩展,你可以通过添加这个来实现:

 [extensions] hgext.mq = 

到你的〜/ .hgrc(或者mercurial.ini)文件。

小条信息应该在这里,但现在服务器有一个很好的“内部服务器错误”消息。