我该如何撤消我的最后一次意外(未推动)变化的变化?

如果可能的话,将首选一种使用Tortoisehg的方法。

更新

在我的具体情况下,我进行了更改(未推动)。然后我从服务器拉出并更新。通过我决定的这些新更新,我的最后一个提交已经过时了,我不想同步。看起来, hg rollback 并不是我要搜索的内容,因为它会回滚而不是我的提交。

有帮助吗?

解决方案

一种方式是 hg rollback (截至2013年8月,已弃用hg2.7)

请用 hg commit --amend 代替 rollback 纠正最后一个提交中的错误。

回滚存储库中的最后一次交易。

什么时候 投入 或者 合并, ,mercurial添加了 更改集 最后。
Mercurial保留了在交易之前触摸的每个文件的名称及其长度的事务日志。在中止,它将每个文件截断为先前的长度。这种简单是制作的好处之一 Revlogs 仅附加。交易期刊还允许进行撤消操作。

龟恢复部分:

alt text

这个线程 还详细介绍了 hg rollbackhg strip:
(写 马丁·盖斯勒 谁也为此做出贡献)

  • 'hg rollback'将删除最后一次交易。交易是在数据库中经常发现的概念。在Mercurial中,我们在运行某些操作时开始交易,例如提交,推,拉...
    当操作成功完成时,交易被标记为完整。如果发生错误,则交易“向后回滚”,并且存储库与以前相同。
    您可以用“ HG回滚”手动触发回滚。这将撤消最后一个交易命令。如果拉动命令将10个新的更改带入不同分支的存储库,则'hg rollback'将把它们全部删除。请注意:有 没有备份 当您回滚交易时!

  • 'hg strip'将删除更改及其所有后代。更改集作为捆绑包保存,如果需要,您可以再次申请。

永远 在评论中提出建议(2016年,5年后)

您可以通过首先忘记它们来“ UN-COMMIT”文件,例如: hg forget filea; hg commit --amend, ,但这似乎不直觉。
hg strip --keep 对于现代汞来说,可能是更好的解决方案。

其他提示

hg strip 将完全从存储库中删除修订版(和任何后代)。

要使用条带,您需要安装 mqextension 通过将以下行添加到您的.hgrc(或mercurial.ini):

[extensions]
mq =

在Tortoisehg中,Strip命令可在工作台上找到。右键单击修订版,然后选择“修改历史记录” - >“ strip”。

自从 strip 更改存储库的历史记录,您只能将其用于尚未与任何人共享的修订。如果您使用的是Mercurial 2.1+,则可以使用 阶段 跟踪此信息。如果提交仍处于草稿阶段,则尚未与其他存储库共享,因此您可以安全地剥离它。 (感谢Zasurus指出了这一点)。

由于您无法回滚,因此应将其合并到拉动时获得的新头部。如果您不希望您在其中所做的任何工作,则可以轻松地使用 这个提示.

所以如果你拉了 更新到他们的头 你可以这样做:

hg --config ui.merge=internal:local merge

将所有更改保留在当前检查的修订中,并且没有任何更改未经检查的修订(您写的是您不再想要的)。

这是一个很好的方法,因为它可以使您的历史准确和完整。如果从现在起两年后有人发现了一个错误,则可以在同一件事的实现(未使用但保存)的实现中,然后走,“哦,我做对了”。 :)

hg rollback 就是你想要的。

在乌龟中 hg rollback 是在“提交对话”中完成的。打开提交对话框,然后选择“撤消”。

alt text

在当前版本的Tortoisehg Workbench 4.4.1(07.2018)中,您可以使用 Repository - Rollback/undo...:
enter image description here

拉出并更新工作空间后,请执行一个thg,然后右键单击要摆脱的更改集,然后单击修改历史记录 - > strip,它将删除更改集,您将指向默认提示。

它的解决方法。

如果您不推到服务器,则将从存储库文件夹和新的新文件夹中克隆到新文件夹中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top