首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Mercurial中获取文件的特定版本?

如何在Mercurial中获取文件的特定版本?
EN

Stack Overflow用户
提问于 2010-01-21 14:33:20
回答 5查看 47K关注 0票数 120

我对Mercurial是个新手。只是找不到合适的命令。已尝试更新/检出,但没有成功。我正在使用本地存储库。谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-21 22:32:16

我认为您需要hg revert -r<rev> <file> (这会将该文件更改为在给定版本时的状态)。

票数 162
EN

Stack Overflow用户

发布于 2010-01-22 01:17:36

正如djc所说,revert修改了一个文件,以匹配先前的修订。如果您不希望它就位,您可以使用hg cat -r revisionid filename (当然,替换为修订号和文件名),它会将文件输出到标准输出,适合于重定向到您喜欢的任何位置。

票数 85
EN

Stack Overflow用户

发布于 2010-01-22 01:17:53

hg revert确实解决了这个问题。但我认为,你对更广泛的事情感到困惑,而不是简单地回答你的问题,并希望尝试更全面地回答。

hg update是一个完整的存储库命令,不会对单个文件起作用。它在这方面与subversion svn update不同。如果执行hg --help update,您可以看到情况就是这样,因为该命令没有接受文件参数。它可用于将整个存储库移动到特定快照,但不能用于仅对一个文件执行此操作。

如果键入hg --help,您将看到一个命令列表。这是一个相当大且有些令人生畏的清单,但如果你通读它,你会发现这一行:

revert       restore individual files or directories to an earlier state

现在,如果您只是想要最后一个状态用于比较,那么您可能会对另一个命令感兴趣,那就是hg cat。这将允许您打印出任何特定修订版的文件内容。然后,您可以将其输出重定向到其他文件中。然后,您可以将文件的先前已知良好版本和旧版本并排进行比较。

Mercurial有一个单独的update命令的原因是,在Mercurial中可以做一些在Subversion中不可能做的事情。您可以update到较早的版本,进行更改,然后提交。这将创建一个分支。update命令还可以更改当前工作目录的父修订版本,并将该目录中所有文件的内容更改为父修订版本的版本。

这意味着revert更改了一个文件的内容(甚至是整个存储库,如果您为命令提供了正确的参数),但保持当前工作副本的父修订不变。

您可以使用hg parents命令查找当前工作副本的父修订(或合并时的修订)。

在Subversion中,修订是一个严格的线性级数。Mercurial可以轻而易举地创建分支,而且它们几乎同样容易合并。修订形成了DAG,而不是严格意义上的线性级数。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2107330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档