1

我想在当前的 darcs 存储库(它的工作目录)中检查一个较旧的标记状态。

我不想克隆到另一个目录(因为我在当前目录中设置了一个 cabal 沙箱)。

我已经将所有新更改推送到远程仓库,所以我并不关心这些更改是否在本地完全丢失。(但仍然:我不能保存补丁,但仍然检查旧状态吗?)

这该怎么做?

尝试

我试过

darcs obliterate --from-tag=TAG

但这并不完全是我想要的结果。这也消除了标签!

因此,要恢复 TAG,我必须darcs pull选择行中的第一个补丁 (TAG),然后按d跳过所有其他补丁。

好吧,darcs obliterate --from-tag=TAG确实交互式地询问要删除什么,所以理论上我可以离开 TAG,但它从最近的补丁开始询问,所以我必须经历许多最近的补丁,然后才能告知darcs我离开 TAG 的决定。

4

1 回答 1

1

您可以使用该--reverse选项先obliterate询问标签,n然后a说出所有其他标签。

事实上obliterate --from-tag,不一定会选择标签未涵盖的所有内容,因为它的行为取决于当前在存储库中的特定顺序补丁和标签。

--from-tag所以在第一次删除之后,我会在没有and的情况下再做一次--reverse。这次将首先提供标签(因为它之后的所有内容都将消失),您可以这样说n,然后a是其他所有内容 - 只有在标签被拒绝后才会提供标签未涵盖的补丁。

在相对不太可能发生的情况下,包括另一个标签的许多补丁都被此捕获,您可能需要重复此操作,直到它停止提供更多补丁为止。

关于如何在移回旧状态时保留补丁的主题,-o以及允许您将删除的补丁保存到磁盘的-O选项。obliterate然后您可以稍后使用“darcs apply”恢复它们。但是,您确实需要注意不要修改本地存储库中留下的任何补丁,或者在不保留它们的情况下删除其他补丁,因为这可能会使保存的补丁不适用。

于 2015-03-26T21:44:53.540 回答