是否有可能恢复最近的变化?

时间:2013-01-05 10:36:25

标签: mercurial

我最近对几个文件进行了不必要的更改。是否可以根据时间恢复它们(例如恢复最近10分钟内所做的所有更改)

1 个答案:

答案 0 :(得分:3)

选项1:回滚或剥离

如果您已经提交(并且没有推送)一些不需要的更改,那么很容易:

$ hg strip <firts-unwanted-revision>

这需要mq strip extension to be enabled

或者检查rollback命令是否适合您的情况。

选项2:仅还原所选文件

否则,您只能将文件还原为上次提交的状态。 Mercurial(作为Git,SVN和大多数其他版本控制系统)仅在您提交时跟踪更改。介于两者之间的一切都超出了Mercurial的控制范围。这就是为什么通常最好早点和经常提交。

但是,您可以使用文件的修改时间,并仅还原在过去10分钟内触摸过的文件。请注意,这将恢复每个文件的所有更改,即10多分钟前在这些文件中所做的更改。它只保护正确编辑的文件,其中最后一次更改超过10分钟。

$ hg revert <files-touched-within-last-10-minutes>

在Unix系统上,使用find命令获取在过去10分钟内修改的所有文件的列表:

$ find -mmin -10

选项3:提交好的更改,丢弃不良的更改

最后有一个第三个选项,当你的糟糕变化没有覆盖好的变化但存在于它们旁边时,这个选项很有效。

这是一个很好的策略
  1. 只提交好的更改(使用recordcrecord命令),然后
  2. 还原所有剩余的更改(例如,使用hg up -r . -C

  3. HG-Book在dealing with unwanted changes上有更多提示。