我想在当前darcs存储库(其工作目录)中检出较旧的标记状态。
我不想克隆到另一个目录(因为我在当前目录中设置了一个阴谋沙箱)。
我已经将所有新更改推送到了远程仓库中,因此我并不在乎更改是否在本地完全丢失。(但仍然:我不能保留补丁,但仍然签出旧状态吗?)
这该怎么做?
我试过了
darcs obliterate --from-tag=TAG
但这并不能完全达到我想要的结果。这也消除了标签!
因此,要获得TAG,我必须darcs pull
选择行中的第一个补丁(TAG),然后按d
跳过所有其他补丁。
好吧,darcs obliterate --from-tag=TAG
确实互动地询问了要删除的内容,所以从理论上讲我可以离开TAG,但是它是从最近的补丁开始询问的,因此我必须经历许多最近的补丁,然后才能知道darcs
我要离开TAG的决定。
您可以使用该--reverse
选项先obliterate
询问有关标签的信息,n
然后a
再说出所有其余信息。
实际上,obliterate --from-tag
不一定会选择标签未涵盖的所有内容,因为其行为取决于存储库中当前的特定顺序补丁和标签。
因此,在第一次淘汰之后,我会在没有--from-tag
和的情况下再做一次--reverse
。这次,将首先提供标签(因为标签消失后的所有内容),n
然后再a
对其他所有内容说-拒绝标签后,仅提供标签未覆盖的补丁。
在相对不太可能的情况下,此操作捕获了包括另一个标签在内的许多补丁,您可能需要重复执行此操作,直到它停止提供更多补丁为止。
关于如何在回到较旧状态时保持修补程序的主题,使用-o
和-O
选项obliterate
可将已删除的修补程序保存到磁盘。然后,您可以稍后使用“ darcs apply”将其还原。但是,您确实需要小心,不要再修改保留在本地存储库中的任何补丁程序,或者在不保留其他补丁程序的情况下删除其他补丁程序,因为这可能会使保存的补丁程序不适用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句