【问题标题】:Retrieve old version of a file without changing working copy parent在不更改工作副本父级的情况下检索文件的旧版本
【发布时间】:2011-04-05 13:29:18
【问题描述】:

如何在 Mercurial 中获取文件的早期版本的副本,而不将其作为工作区中文件的新默认工作副本?

我找到了hg revert 命令,我认为它可以满足我的要求,但我不确定。

我需要获取我的代码早期版本的副本,以便使用几分钟。但我不想打扰当前运行良好的版本。

所以我打算这样做:

hg revert -r 10 myfile.pls

有没有办法将它输出到不同的目录,这样我当前的文件工作版本就不会受到干扰?比如:

hg revert -r 10 myfile.pls > c:\temp\dump\myfile_revision10.pls

【问题讨论】:

    标签: version-control mercurial dvcs revert


    【解决方案1】:

    你使用的命令是这样的:

    hg cat -r 10 myfile.pls > C:\temp\dump\myfile_revision10.pls
    

    了解一点 Unix 有助于使用 Mercurial 命令。也许cat 应该有一个内置别名print 或类似的东西。

    【讨论】:

      【解决方案2】:

      cat command 可用于检索文件的任何修订:

      $ hg cat -r 10 myfile.pls
      

      您可以将输出重定向到另一个文件

      $ hg cat -r 10 myfile.pls > old.pls
      

      或使用--output 标志。如果您需要对多个文件执行此操作,请查看archive command,它可以针对整个项目执行此操作,例如,

      $ hg archive -r 10 ../revision-10
      

      这将创建文件夹 revision-10,其中包含您的存储库在修订版 10 中的快照。

      但是,大多数情况下,您应该只使用update command 来签出较早的版本。更新是您在引入新更改后用来更新工作副本的命令,但如果需要,该命令也可用于使您的工作副本过时。所以

      $ hg update -r 10   # go back
      (look at your files, test, etc...)
      $ hg update         # go back to the tip
      

      【讨论】:

      • 感谢update 的有用且简洁的描述!在使用更新命令之前我有点紧张(我想是 coriolanus)。
      猜你喜欢
      • 2015-04-11
      • 2014-07-20
      • 2015-09-25
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多