我对Mercurial是个新手。只是找不到合适的命令。已尝试更新/检出,但没有成功。我正在使用本地存储库。谢谢
发布于 2010-01-21 22:32:16
我认为您需要hg revert -r<rev> <file>
(这会将该文件更改为在给定版本时的状态)。
发布于 2010-01-22 01:17:36
正如djc所说,revert
修改了一个文件,以匹配先前的修订。如果您不希望它就位,您可以使用hg cat -r revisionid filename
(当然,替换为修订号和文件名),它会将文件输出到标准输出,适合于重定向到您喜欢的任何位置。
发布于 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,而不是严格意义上的线性级数。
https://stackoverflow.com/questions/2107330
复制相似问题