1

如果我的存储库中有这个变更集

A --> B --> C --> D
      *

B 已添加书签,而 D 位于提示中 - 我如何创建一个修订集,它将选择 B 和 D 之间的所有内容,但不选择 B。

具体来说,我正在尝试将 C 和 D 压缩到 B 中,例如:

hg strip -r "bookmark:." -k

除了这一行还将删除我要保留的提交 B。

4

2 回答 2

2

我不完全清楚您是要压缩 C 和 D,创建一个新的提交 C',还是要压缩 B、C 和 D,创建一个新的提交 B',这将保留原始书签。

为了第一:

hg rebase -s 'children(bookmark)' -d bookmark --collapse -m <msg>

您需要使用-m-l选项指定提交消息,否则您将进入编辑器。

对于第二个:

hg rebase -s bookmark -d bookmark^ --collapse -m <msg>

对于要指定修订的所有后代(不包括修订本身)的修订集,请使用以下修订集:

children(bookmark)::

请注意,此时的非线性历史可能会产生意想不到的结果(特别是,children()此处的使用假设只有一个子修订版)。

请记住为此在您的 hgrc 文件中启用 rebase 扩展。

于 2015-06-08T02:48:39.630 回答
1

您可以使用扩展histedit实现这一点。只需键入hg histedit c561b4e977dfc561b4e977df在您的示例中,修订版 B 的哈希值在哪里)。然后fold在弹出的编辑器中键入修订 C 和 D 旁边。这会将修订 C 和 D 折叠为 B。

于 2015-06-07T23:16:32.513 回答