我怎么git重置 – 硬头上Mercurial?
我是一个尝试使用Mercurial的Git用户。
这是发生了什么:我做了一个恢复我想要恢复的变更集。 这创造了一个新的头,所以汞指示我合并(回到“默认”,我假设)。 合并后,它告诉我,我仍然不得不承诺。 然后我注意到在解决合并冲突时我做错了什么,并决定我希望拥有和hg backout之前一样的东西,也就是说,我希望这个无限的合并消失。 在Git上,这个无用的东西将在索引中,我只是做一个git reset --hard HEAD清除,但从我读过的,索引不存在于Mercurial。 那么我怎么退出呢? 
 如果你还没有提交,而且听起来好像没有,你可以使用hg update --clean取消所有的合并工作。 
 但是,在新的mercurial中有一个方便的命令来重新合并单个文件: hg resolve path/to/file.ext 。 从hg help resolve : 
The available actions are: ... 4) discard your current attempt(s) at resolving conflicts and从头开始重新合并:“hg resolve file …”(或“-a”表示所有未解决的文件)
这是closures的:
 hg update --clean 
从git中,命令:
 git reset --hard # reset to last commit git clean -df # delete untracked files 
等于
 hg update --clean # reset to last commit hg purge # delete untracked files 
  Hg手册的GitConcepts页面解释了如何执行git用户在Mercurial中熟悉的许多操作。 
  Mercurial没有任何内置的git reset --hard行为。 但是, strip扩展提供了一个strip命令。 要使用, 首先在~/.hgrc文件中启用strip 
 [extensions] strip = 
  注意:这个扩展在Mercurial-2.8中是新的。  以前的版本提供了mq扩展中的strip命令。 
 现在你可以运行像hg strip甚至hg help strip这样的命令。 要删除变更集及其所有子项,只需将该变更集指定为hg strip的参数即可。 例如,要删除刚刚创build的最后一个提交(在使用导致hg rollback命令报告不再有任何要回滚的事务之后),可以删除最新的修订。 每次运行此命令时,都会删除另一个修订版本。  hg strip的行为应该被认为是不可逆转的;  不熟悉的用户在使用之前应该备份他们的存储库。 
 $ hg strip tip 
 例如,使用revsets语法 ,我指出我想删除我的任何提交,导致在运行hg heads时显示额外的hg heads 。 如果你在下面的expression式中指定了一个特殊的修改,那么当前分支中不是你所选修订版本的祖先的所有内容都将被修剪。 这似乎最接近我想要的行为,当我发出命令git reset --hard HEAD 。 
 $ hg strip "branch(tip) and not(ancestors(tip)::tip)"