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