如何恢复剥离的变更集
How Can Stripped Changesets Be Recovered
我不小心删除了我的 mercurial 存储库中的一个变更集,并删除了太多的变更集。我知道它会删除后代,但出于某种原因我认为它只会删除该分支或从它的分支后代开始的分支上的后代。相反,它从剥离修订后提交的每个分支中删除了所有变更集。
mercurial documentation 声明如下:
strip
is not a history-rewriting operation and can be used on public changesets
既然变更集存在于某个地方,因为它不是历史重写操作,那么我该如何恢复它们?
Mercurial 在您的存储库中名为 "strip-backup" 的文件夹中备份剥离补丁(即:剥离、修改等)的所有备份包。此目录位于 <repository-root>/.hg/strip-backup
。
在此文件夹中,您将看到所有更改的备份,但它们将以散列作为名称,格式为 #hash#[-amend]-backup.hg.如果您知道 运行 错误的剥离操作,按时间顺序排序可能会帮助您找到正确的。如果你不这样做,你应该按照相反的时间顺序恢复所有的包,直到恢复了正确的变更集。
执行还原操作的命令是:
hg unbundle <path-to-bundle-file>
hg update
我不小心删除了我的 mercurial 存储库中的一个变更集,并删除了太多的变更集。我知道它会删除后代,但出于某种原因我认为它只会删除该分支或从它的分支后代开始的分支上的后代。相反,它从剥离修订后提交的每个分支中删除了所有变更集。
mercurial documentation 声明如下:
strip
is not a history-rewriting operation and can be used on public changesets
既然变更集存在于某个地方,因为它不是历史重写操作,那么我该如何恢复它们?
Mercurial 在您的存储库中名为 "strip-backup" 的文件夹中备份剥离补丁(即:剥离、修改等)的所有备份包。此目录位于 <repository-root>/.hg/strip-backup
。
在此文件夹中,您将看到所有更改的备份,但它们将以散列作为名称,格式为 #hash#[-amend]-backup.hg.如果您知道 运行 错误的剥离操作,按时间顺序排序可能会帮助您找到正确的。如果你不这样做,你应该按照相反的时间顺序恢复所有的包,直到恢复了正确的变更集。
执行还原操作的命令是:
hg unbundle <path-to-bundle-file>
hg update