HG:匹配远程回购的变更
问题描述:
我从SVN移动到HG和有困难时期的一些限制HG是对我施加:HG:匹配远程回购的变更
我在一个情况下,我有一些错误提交,我想要吹走。事实上,如果我能匹配远程回购的历史,那将是非常好的。
使用Git,这是易如反掌:
git reset --hard origin/branch_name
但我怎么能有水银做呢?从我听说的情况来看,如果你不知道自己在做什么,移动'小费'可能会无意中产生匿名分支,这与git处理相同操作的方式截然不同。
答
“等效” 为你想要的是hg strip
从MQ扩展名,您可以用它来“吹走”您的提交。
https://www.mercurial-scm.org/wiki/StripExtension
另一种 “等价物” 是:
hg update --clean
随着-C/- 清洁选项,提交变更都丢弃, 工作目录更新到所请求的变更。
答
一个简单的解决方案,它常常被忽视的吹走不需要提交是简单地复制他们去
hg clone origin new_clone
rm -rf repo_with_unwanted_commits
现在new_clone
将你送回在远程回购的小费。如果你有你的克隆其他提交您还没有推开,但仍然有需要,你可以在本地克隆:
hg clone -r tip_you_want repo_with_unwanted_commits new_clone
rm -rf repo_with_unwanted_commits
现在new_clone
包含了一切你想要的提交,但不包括那些你想要的垃圾。在这种情况下,您只需在new_clone
的hgrc中设置[paths]
以指向原始的原点回购,然后回到开始的位置。
这很简单,不需要扩展,但是请注意,manojlds使用hg strip
的建议会更快,并且您可以保留任何可能需要的未跟踪文件。无论在哪种情况下,只有在您尚未推送要删除的变更集时才能使用。如果你已经推动,你唯一的安全选择是hg backout
。
为什么切换到第一位? ;) – knittl
这不是我的选择:( – Ben