我如何在Mercurial上重置--hard HEAD?

问题描述 投票:70回答:4

我是一个试图使用Mercurial的Git用户。

这是发生了什么:我做了一个我想要恢复的变更集上的hg backout。这创造了一个新头,所以hg指示我合并(回到“默认”,我假设)。合并后,它告诉我,我仍然必须承诺。然后我注意到在解决合并中的冲突时我做错了什么,并且决定我想要像hg backout之前那样拥有一切,也就是说,我希望这个未经注册的合并消失。在Git上,这个未提及的东西将在索引中,我只是做一个git reset --hard HEAD来消除它,但从我读过的,Mercurial上不存在索引。那我该怎么退出呢?

git mercurial merge dvcs
4个回答
87
投票

如果你还没有投入,听起来你没有,你可以撤消与qazxsw poi的所有合并工作。

然而,在较新的mercurial中,有一个方便的命令来重新合并单个文件:hg update --clean。来自hg resolve path/to/file.ext

hg help resolve

从头开始重新启动合并:“hg resolve file ...”(或所有未解析文件的“-a”)


21
投票

这很接近:

The available actions are: ... 4) discard your current attempt(s) at resolving conflicts and


11
投票

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

8
投票

从git,命令:

tip

等于

git reset --hard HEAD
© www.soinside.com 2019 - 2024. All rights reserved.