Hg手册的GitConcepts页面介绍了如何执行git
用户在Mercurial中熟悉的许多操作。
Mercurial没有任何内置git reset --hard
行为。但是,strip
扩展名提供了一个strip
命令。要使用,请首先strip
在~/.hgrc
文件中启用::
[extensions]
strip =
注意:此扩展是Mercurial 2.8中的新增功能。以前的版本strip
在mq
扩展名中提供了该命令。
现在,您可以运行hg strip
甚至hg help strip
。要删除变更集及其所有子级,只需将变更集指定为的参数即可hg strip
。例如,要删除您刚进行的最后一次提交(在使用了导致hg rollback
报告不再有任何事务回滚的命令之后),您可以删除tip
修订版。每次您运行此命令时,都会删除另一个修订版本。hg strip
的行为应被视为不可逆;陌生的用户应在使用前对其存储库进行备份。
$ hg strip tip
例如,使用revsets语法,我表示我想删除我的所有提交,这会导致在运行时显示额外的标题hg heads
。如果您在下面的表达式中指定了除以外的特定修订版本,则tip
当前分支中所有非您选择的修订版本的祖先都将被修剪。这似乎与我发出命令时想要的行为最接近git reset --hard HEAD
。
$ hg strip "branch(tip) and not(ancestors(tip)::tip)"