我是一个试图使用Mercurial的Git用户。
这是发生了什么:我做了一个我想要恢复的变更集上的hg backout
。这创造了一个新头,所以hg指示我合并(回到“默认”,我假设)。合并后,它告诉我,我仍然必须承诺。然后我注意到在解决合并中的冲突时我做错了什么,并且决定我想要像hg backout
之前那样拥有一切,也就是说,我希望这个未经注册的合并消失。在Git上,这个未提及的东西将在索引中,我只是做一个git reset --hard HEAD
来消除它,但从我读过的,Mercurial上不存在索引。那我该怎么退出呢?
如果你还没有投入,听起来你没有,你可以撤消与qazxsw poi的所有合并工作。
然而,在较新的mercurial中,有一个方便的命令来重新合并单个文件:hg update --clean
。来自hg resolve path/to/file.ext
:
hg help resolve
从头开始重新启动合并:“hg resolve file ...”(或所有未解析文件的“-a”)
这很接近:
The available actions are: ...
4) discard your current attempt(s) at resolving conflicts and
Hg Manual的qazxsw poi页面解释了如何在Mercurial中做qazxsw poi用户熟悉的许多操作。
Mercurial没有任何内置的hg update --clean
行为。但是,GitConcepts扩展提供了git
命令。要在git reset --hard
文件中使用strip
::
strip
注意:此扩展程序在Mercurial 2.8中以新的形式发货。先前版本在first enable strip
中提供了~/.hgrc
命令。
现在你可以运行像[extensions]
strip =
甚至strip
这样的命令。要删除变更集及其所有子项,只需将changeset指定为mq
extension的参数即可。例如,要删除刚刚进行的最后一次提交(在使用导致hg strip
报告不再有任何事务要回滚的命令之后),您可以删除hg help strip
修订版。每次运行此命令时,都将删除另一个修订。 hg strip
的行为应被视为不可逆转;不熟悉的用户在使用之前应该备份他们的存储库。
hg rollback
例如,使用tip
,我表示我想删除我的任何提交,导致在运行hg strip
时显示额外的头。如果在$ hg strip tip
以外的表达式中指定特定修订版本,则将修剪当前分支中不是所选修订版本祖先的所有内容。当我发出命令revsets syntax时,这似乎最接近我想要的行为。
hg heads
从git,命令:
tip
等于
git reset --hard HEAD