如果你做了hg pull
然后hg update
(或hg merge
),有没有办法退出?也就是说:将您的存储库恢复到执行hg pull
之前的状态?如何还原Mercurial hg pull?
我相信你可以做hg update -r n
你可以在拉动前指定变更集为n
。虽然我猜测这仍然会将变更集保留在您的存储库中,但这不是我们想要的。 ??
如果你做了hg pull
然后hg update
(或hg merge
),有没有办法退出?也就是说:将您的存储库恢复到执行hg pull
之前的状态?如何还原Mercurial hg pull?
我相信你可以做hg update -r n
你可以在拉动前指定变更集为n
。虽然我猜测这仍然会将变更集保留在您的存储库中,但这不是我们想要的。 ??
hg strip
将从存储库中删除修订版。像所有强大的命令一样,它很危险,所以要小心。
https://www.mercurial-scm.org/wiki/StripExtension
另见:
https://www.mercurial-scm.org/wiki/EditingHistory
如果立即抓住你的错误(或相当快),你可以只使用汞柱条REV回滚最新(一个或多个)更改。 ...
hg --rollback
可用于撤消上一个事务,只要您的hg pull
仍然是最近的事务,那么您可以使用它。这个命令应该小心使用。有关更多详情,请参阅here。
似乎将我的工作文件更新到拉和合并之前的状态。但是`hg out`仍然显示我拉下来的变更集,而`hg push`会将这些变更集推送到我不想做的中央资源库中。 – 2011-01-24 16:51:04
如果你想删除的所有痕迹的形成拉你的历史,那么你需要为伯特˚F建议(在善变的理念是永远不会改变的历史)
如果使用扩展你不要介意包含你的错误的历史,你有两个稍微不同的选项hg update -C -r
它将在您指定的版本创建一个新的分支或hg revert -r
它将停留在同一分支上,但创建一个新的无限制的更改撤消一切。
好吧,你不能回滚,因为你已经做了提交。你可以使用'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
删除当前补丁。
编辑:显然,你需要使MQ扩展这两种,除非你使用2.8或更高版本。在这种情况下,钢带位于钢带延伸段,而mq位于mq延伸段。两者都随标准安装一起发货。
在我的情况下,我做了拉,合并,然后提交(合并)。然后我意识到我想把所有这一切都退回来。 `hg rollback`让我退出提交,但我看不到如何退出拉.. – 2011-01-24 16:27:28
有一个级别的回滚历史,所以我们将不得不看看是否有其他人发布不同的建议 – mikej 2011-01-24 16:34:26