Ric*_*ard 95 version-control mercurial dvcs head
我正在使用Mercurial,我在当地遇到了一个可怕的混乱,有三个头.我无法推送,我只想删除所有本地更改和提交,然后重新开始使用完全干净的代码和干净的历史记录.
换句话说,我希望最终得到(a)与远程分支的尖端中存在的本地完全相同的代码,以及(b)没有任何本地提交的历史记录.
我知道会hg update -C覆盖任何本地更改.但是如何删除任何本地提交?
要清楚,我没有兴趣保留我在当地完成的任何工作.我只想要最简单的方法来恢复到完全干净的本地结账.
jus*_*ody 129
当最简单的方法(新的hg clone)不实用时,我使用hg strip:
% hg outgoing -l 1
% hg strip $rev # replace $rev with the revision number from outgoing
Run Code Online (Sandbox Code Playgroud)
重复直到hg outgoing保持安静.请注意,hg strip $rev抹去$rev及其所有后代.
请注意,您可能必须先strip在Mercurial设置中启用.
PS:更智能的方法是使用revset语言,并执行:
% hg strip 'roots(outgoing())'
Run Code Online (Sandbox Code Playgroud)
Mar*_*ler 21
您将需要创建一个本地克隆,其中只保留远程存储库中也存在的更改集.使用TortoiseHg,hg log或类似搞清楚,你的修订是最新的版本,你没做(在一个混乱启动前).使用hg outgoing可以在这里提供帮助 - 它将列出您所做的所有更改集 - 选择早于其中任何一个的修订版号.
如果调用目标修订版并调用了good克隆foo,则执行以下操作:
hg clone -r good foo foo-clean
Run Code Online (Sandbox Code Playgroud)
这将是一个快速的本地操作 - 没有理由再次下载所有内容.该foo-clean克隆将只包含多达版本的变更good.现在,您可以替换foo-clean/.hg/hgrc使用foo/.hg/hgrc,以保护你的资料库,本地设置,如默认推/拉路径.
如果您对foo-clean所需的一切感到满意foo,那么只需删除foo并重命名foo-clean为foo.执行a hg pull将任何新的更改集从远程存储库中获取到克隆中并继续正常运行.
如果没有人将新的变更集推送到远程存储库,那么确定您要使用的修订版非常简单good:hg id default将告诉您远程存储库中的技巧ID.
好.所以只需删除所有本地内容,hg init新的本地存储库以及hg pull您拥有的最新提示.别忘了hg update这之后.
| 归档时间: |
|
| 查看次数: |
38612 次 |
| 最近记录: |