Answers:
当最简单的方法(new hg clone
)不可行时,我使用hg strip
:
% hg outgoing -l 1
% hg strip $rev # replace $rev with the revision number from outgoing
重复直到hg outgoing
保持安静。请注意,这hg strip $rev
消除$rev
了它及其所有后代。
请注意,您可能必须先strip
在Mercurial设置中启用。
PS:一种更聪明的方法是使用revset语言,然后执行以下操作:
% hg strip 'roots(outgoing())'
hg strip 'roots(outgoing())'
因无法识别而无法上班'roots(outgoing())'
。我能够与它合作hg strip "roots(outgoing())"
。
cmd.exe
。
您需要创建一个本地克隆,其中仅保留远程存储库中也存在的变更集。使用TortoiseHg,hg log
或类似找出哪些你的修订是你最新的版本并没有使(开始混乱前一个)。hg outgoing
在这里使用可以有所帮助-它将列出您所做的所有变更集-请先选择任何修订号。
如果调用了目标修订版,good
而您的克隆称为foo
,则执行以下操作:
hg clone -r good foo foo-clean
这将是一种快速的本地操作- 没有理由再次下载所有内容。该foo-clean
克隆将只包含多达版本的变更good
。现在foo-clean/.hg/hgrc
,您可以替换foo/.hg/hgrc
为以保留您的存储库本地设置,例如默认的推/拉路径。
当您满意foo-clean
后foo
,便可以删除foo
并重命名foo-clean
为foo
。进行操作hg pull
以将任何新更改集从远程存储库获取到您的克隆中,然后像往常一样继续。
如果没有人将新的变更集推送到远程存储库,那么按照good
上面的方法确定要使用的修订版本非常简单:hg id default
会告诉您远程存储库中提示的ID。
hg pull -r
为每个其他分支的最新“良好”修订版。
好。因此,只需删除所有本地内容,hg init
新的本地存储库和hg pull
您拥有的最新提示。hg update
在此之后不要忘记。
hg init
+ hg pull
= hg clone
不同之处在于,hg clone
它.hg/hgrc
为您创建了一个不错的文件,并且hg clone
在同一文件系统上进行克隆时将使用硬链接来节省空间。
hg help init
是在这里:selenic.com/mercurial/hg.1.html#init但这也许太简洁了吗?如果您需要更多帮助,请发送邮件到我们的邮件列表!参见:mercurial.selenic.com/wiki/MailingLists