如何返回 darcs 中的标签?

How to go back to a tag in darcs?

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

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

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

如何操作?

尝试次数

我试过了

darcs obliterate --from-tag=TAG

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

因此,为了取回 TAG,我必须 darcs pull 和 select 行中的第一个补丁 (TAG),然后按 d 跳过所有其他补丁。

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

您可以使用 obliterate--reverse 选项先询问标签,对那个说 n 然后 a 取消所有其余的。

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

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

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

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