如何在Mercurial中重新定位

时间:2013-08-12 12:04:56

标签: mercurial repository atlassian-sourcetree

我已阅读此HG Rebasing tutorial但仍无法理解如何重新设置我的存储库。

我有这样一个序列的变更集:

A - B - C - D - E

如何以这样的顺序重新定位它们?

A - D - E - B - C

谢谢。

2 个答案:

答案 0 :(得分:4)

你需要为此做两次重组。你需要将D移动到A的孩子,然后将B移动到E的孩子。

在执行此操作之前,您应该确保备份有效,以防它没有达到预期效果。

首先你要做:

  

hg rebase --source D --dest A

哪会给你:

A - B - C
  \ D - E

然后你会这样做:

  

hg rebase --source B --dest E

哪会给你最终的结果。

答案 1 :(得分:2)

在你的情况下,它是不是重新定位,而是重写(旧)历史

对于您的任务,您可以使用

  • Histedit扩展(自2.3版以来Mercurial的一部分)(Readme涵盖您的用例)
  • MQ Extension(将B - C - D - E个变更集转换为MQ补丁,重新排序,将补丁返回到变更集状态)