繁体   English   中英

如何恢复Mercurial hg拉?

[英]How to revert a Mercurial hg pull?

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

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

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

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

另见:

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

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

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

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

hg strip <REV>

其中<REV>是您要删除的第一个修订版本。 它将删除该一个和所有后代(包括您的合并提交)。

或者你可以

hg qnew (if you don't already have a patch queue)
hg qimport <REV>

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


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

hg --rollback可用于撤销上一个事务,因此只要您的hg pull仍然是最近的事务,那么您可以使用它。 但是应该谨慎使用此命令。 请参阅此处了解更多详情。

您可以:

hg update -C <version>

请参阅mercurial FAQ

如果你想从历史中删除拉动的所有痕迹,那么你需要使用Bert F建议的扩展(mercurial中的哲学是永远不会改变历史)

如果你不介意包含你的错误的历史,你有两个略有不同的选项hg update -C -r将在你指定的版本或hg revert -r创建一个新的分支,它将保留在同一个分支上但创建一个新的uncommited更改撤消一切。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM