如何删除剥离的变更集

时间:2016-11-09 18:30:56

标签: version-control mercurial

我意外地在我的mercurial存储库中删除了一个变更集并删除了太多的变更集。我知道它会删除后代,但出于某种原因,我认为它只会删除该分支上的后代或从它的一个分支后代开始的分支。相反,它删除了在剥离修订后提交的每个分支的所有变更集。

mercurial documentation声明如下:

  

strip不是历史记录重写操作,可用于公共变更集

由于变更集存在于某处,因为它不是历史重写操作,那么我该如何恢复它们呢?

1 个答案:

答案 0 :(得分:3)

Mercurial备份了一个名为&#34; strip-backup&#34;的文件夹中的剥离补丁的所有备份包(即:剥离,修改等)。在您的存储库中。该目录位于<repository-root>/.hg/strip-backup

在此文件夹中,您会看到所有更改的备份,但它们会以 #hash#[ - amend] -backup.hg 格式的名称显示哈希值。按时间顺序对此排序可以帮助您找到正确的一个,假设您知道何时运行坏条操作。如果不这样做,则应按逆时间顺序恢复所有软件包,直到恢复正确的更改集。

执行还原操作的命令是:

hg unbundle <path-to-bundle-file>
hg update