如何恢复Mercurial hg拉?

Mar*_*eon 13 mercurial

如果你做一个hg pull然后一个hg update(或一个hg merge),有没有办法支持这个?即:将您的存储库恢复到执行之前的状态hg pull

我相信你可以hg update -r n在pull之前指定变更集n.虽然我猜这仍然会将更改集留在您的存储库中,但这并不是我们想要的.??

Ber*_*t F 11

hg strip将从存储库中删除修订.像所有强大的命令一样,它很危险,所以要小心.

https://www.mercurial-scm.org/wiki/StripExtension

另见:

https://www.mercurial-scm.org/wiki/EditingHistory

如果您立即(或合理地很快)发现错误,您可以使用hg strip REV来回滚最新(一个或多个)更改....


Pau*_*l S 6

好的,你不能回滚,因为你已经完成了提交.您可以做的是使用'hg strip',它是mq的一部分(在2.8 strip之后是它自己的扩展名),或使用mq删除更改.无论哪种方式,我建议你在另一个克隆上做一切,以防万一.

要执行剥离,请更新到要保留的修订,然后

hg strip <REV>
Run Code Online (Sandbox Code Playgroud)

<REV>您要删除的第一个修订版在哪里.它将删除该一个和所有后代(包括您的合并提交).

或者你可以

hg qnew (if you don't already have a patch queue)
hg qimport <REV>
Run Code Online (Sandbox Code Playgroud)

这会将单个修订导入补丁队列.然后,您可以添加更多,然后使用mq命令编辑,重新排列,删除或您想要对这些修订执行的任何操作.qdel删除当前的补丁.


编辑:显然,除非您使用2.8或更高版本,否则您需要为这两者启用MQ扩展.在这种情况下,条带在条带扩展中,mq在mq扩展中.两者都附带标准安装.