version-control - 如何恢复剥离的变更集

标签 version-control mercurial

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

mercurial documentation陈述如下:

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/

相关文章:

PyCharm 中的 Git 使用预先存在的存储库

git - 如何在源代码树 UI 中过滤当前分支和母版的历史记录?

svn - 我们最终能否在企业软件中转向 DVCS? SVN还是开发用的 'must have'吗?

mercurial - Hg - 查找 "cover"特定文件版本的标签

ios - 如何处理 Xcode "pbxproj"文件中的合并冲突?

visual-studio - TFS - 注释 - 查看上次更改之前的更改

svn - 在 Windows 上与 Subversion 集成时使用哪些工具?

mercurial - 中止 : untracked file in working directory differs from file in requested revision: '.hgignore'

linux - 在 Linux 上运行 hg convert

mercurial - 如何在 Mercurial 上 merge 用户?