在Mercurial中追溯命名分支

时间:2010-03-01 09:53:26

标签: mercurial branch

有没有办法在提交后将一堆Mercurial变更集与命名分支相关联,即追溯?

3 个答案:

答案 0 :(得分:14)

我只想这样做,这是我找到的解决方案。 自问题最初被问到一年过去了,这可以解释为什么我现在可以找到解决方案。 它的缺点是你在这个过程中创建了一个额外的修订,但这对我来说并不是太糟糕。

首先,您将返回到要创建分支的位置。 在我的情况下,我实际上想要开始一个新的根(因为当我启动存储库时我不是很明智,但无论如何),所以我更新为null。你可能想在其他地方开始,这取决于你的情况。

$ hg update null

然后,创建分支。

$ hg branch blah
$ hg commit -m "Created blah branch."

然后,我们将我们所做的所有提交改为新分支:

$ hg rebase -s SOURCE -d DEST

此处的SOURCE应该是您在要创建分支的提交中进行的第一次提交,DEST应该是创建分支的提交(我们在上面提交的提交)。

答案 1 :(得分:4)

不,分支名称是变更集的一部分(它实际上就像您添加到提交中的标签),这意味着变更集散列取决于分支名称。

因此,追溯更改它的唯一方法是重写历史记录(如果您将更改推送到其他地方,则效果不佳,因为您必须重写每个具有更改的仓库)。

要重写历史记录,您可以使用例如mq。

答案 2 :(得分:0)

不是一个完整的解决方案,但没有重写历史;您可以标记未命名分支中的最后一个更改集。如果你永远不会从这里重新标记,标签应该是冲浪的。如果确实需要重新分配,则可以在标记的变更集之后转到命名分支。