在使用Mercurial时,如果我想用特定的版本来更改当前的工作副本,我只是这样做:

$> hg revert good_revision
$> hg commit -m "Now I'm in the good revision"


然后,我可以看到我的所有文件都处于int good_revision状态,并且可以开始对其进行处理。

到目前为止,我可以对化石进行还原,但只能对特定文件进行还原,而不能对整个存储库进行还原,并且更新或签出似乎无法按我期望的那样进行。

化石如何将我的整个存储库还原到某个修订版本?

最佳答案

我不确定我是否会遵循,但我认为您想要的是能够在Fossil中创建“一个分支上有多个头部”的缝合。如果是,则Fossil确实支持这一点,只是将分支的负责人称为“叶子”,而此过程称为“分支”。

为此,你

fossil update good_revision


然后

fossil commit --allow-fork


您现在可以生成fossil ui,导航到您的分支,并看到它有两片叶子。

现在,您可以关闭当时的叶子。

请注意,虽然受支持,但这似乎不是推荐的做法。相反,Fossil建议使用一种相当特殊的方法来丢弃更改:


将“坏”叶子上的分支重命名为“错误”(或如果该分支尚不存在,则创建该分支)。通过这样做,您可以有效地“标记”结果子叶为错误。

请注意,名称“ mistake”只是一个约定。新创建的存储库中不存在此分支。
关闭“坏”的叶子。
使用fossil update返回到最后一个良好状态,继续进行黑客攻击。

由于该“最后一次良好”提交仍继承其父提交的分支标记,因此您记录的下一个提交也将继承它,并且不会出现在“错误”分支上。


例如,see how it looks in the SQLite repo-该分支上有一堆各种各样的提交短链。另请参见this

07-24 13:33