我的问题是:
如果我在Mercurial存储库中有两个头,并使用TortoiseHg作为我的客户端,则存储库可能如下所示:

然后我可以test2通过合并和丢弃摆脱头部.首先,我会更新到我想保留的头部(test3在这种情况下,上面的图像中已经是我工作文件夹的当前父级).然后我会右键单击并选择"与...合并":

在弹出的对话框中,我会选择放弃合并目标的更改(即我想要丢弃所有更改的分支):

合并完成后,test2头部的所有更改都被丢弃了,我可以提交.头已经消失了,但改变仍然是历史的一部分.
我的问题是:如何仅使用命令行客户端执行相同的操作?我找不到该hg merge命令的任何匹配选项:
hg merge [-P] [-f] [[-r] REV]
merge working directory with another revision
... snipped text
options:
-f --force force a merge with outstanding changes
-t --tool VALUE specify merge tool
-r --rev REV revision to merge
-P --preview review revisions to merge (no merge is performed)
--mq operate on patch repository
use "hg -v help merge" to show global options
编辑:debugsetparents工作得很好:
hg debugsetparents …
我有一个图形日志,看起来像这样:
(snip)
| |
| o 1) Other Dev: Commit
| | \
o | | 2) Me: Commit
/ | | |
| | o | 3) Other Dev: Commits with an error
| |/| |
| o |/ 4) Me: Merge and commit
| /|
|/ |
o | 5) Me: Realize there were bugs in the commit and take earlier version to merge with
| o 6) Other Dev: Fixes error
o / 7) Me: committing some …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的分支:
A->B->C->D->...->Z
^
1->2-^
Run Code Online (Sandbox Code Playgroud)
哪里C是2和它的祖先合并.
我现在意识到我不应该合并.我可以回去B嫁接D...... Z但这是很多工作.我可以退出C吗?
当我尝试hg backout --merge C,我得到中止:无法回退合并变更.
这些变化已被推送到中央回购,我不打算修改历史或任何东西,我只想要反过来,2它的祖先回到共同的后代B.