2

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

4

1 回答 1

3

选项 1:回滚或剥离

如果您已经提交(而不是推送)一些不需要的更改,这很容易:

$ hg strip <firts-unwanted-revision>

这需要mqstrip要启用的扩展

或者检查该rollback命令是否足以满足您的情况。

选项 2:仅还原所选文件

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

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

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

find在 Unix 系统上,您可以使用以下命令获取最近 10 分钟内修改的所有文件的列表:

$ find -mmin -10

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

最后,当您的错误更改没有覆盖好的更改但存在于它们旁边时,第三个选项效果很好。这里一个好的策略是

  1. 只提交好的更改(使用记录crecord命令),然后
  2. 恢复所有剩余的更改(例如使用hg up -r . -C

HG-Book 有更多关于处理不需要的更改的提示。

于 2013-01-06T21:05:34.453 回答