我需要在我的仓库中删除特定版本的版本化文件,但我不知道该怎么做。
我可以使用hg cat --rev [version] [file-name]查看该文件,但我不知道要删除它。
任何人都知道如何删除特定文件版本?
答案 0 :(得分:3)
简短回答:如果您的回购是公开的,那就很难了。如果它是私人的,更容易。
长答案:Mercurial是一个面向变更集的CVS,实际上并不存储文件修订版。相反,它存储修订(差异)之间的变化。
除此之外,每个变更集ID都根据修订内容计算为加密哈希。这意味着如果您更改了单个变更集,则会更改其每个后代变更集。这是Mercurial重写历史的代价。
如果您需要更改的更改集未被推送到任何位置(或者repo本身是私有的),那么您可以根据需要更改历史记录。
如果变更集是最近的变更集,请考虑使用Mercurial Queues:您可以将变更集导入队列,转到相关变更集,撤消对某个特定文件的更改,然后重新应用其余文件队列。
如果变更集很久以前就已提交,您可能会更新其父级graft违规变更集(您可能必须坚持使用虚拟变更集才能使其正常工作),将其导入MQ,修改它,然后rebase --detach
其余的祖先。
您可以使用私人仓库执行相同操作,但请记住将创建血统的副本:
-- 1 -- 2 -- A -- B -- C -- D original A and its descendants
\
A' -- B' -- C' -- D' modified A' and its descendants
即使您将A
- D
替换为A'
- D'
,从您的回购中提取的所有人仍然会A
- {{1} }!你必须找到一种方法让它们剥离这个血统。