1

上下文:

有三个分支:“我的”、“你的”和“主要的”。我从一个干净的克隆开始,唯一的要求是使“我的”分支像“主”分支一样,只添加一些更改。我不想改变其他分支。当前的“我的”分支只有一个变更集,我希望将其删除并替换为新的变更集。

我的尝试:

“我的”只包含一个变更集,我想丢弃它。所以,我剥离了这个变更集(有效地删除了“mine”),将目录更新到“main”分支,重新创建了“mine”(“hg branch mine”),添加了我的更改,提交,现在我想推送。“hg push -b mine”的输出是“abort: push created new remote head...”并引用了我的新变更集。但是,我只想用旧的(本地删除的)变更集替换我的新变更集。“hg 传出”列出了我的新变更集,“hg 传入”列出了我的旧变更集。

我想我很接近,有什么建议吗?强制推送在这里有用吗?欢迎替代解决方案和有用的参考资料。

4

1 回答 1

0

在我尝试之后,包括从“我的”分支中删除我不想要的变更集,然后在“我的”分支上提交我的新变更集,这是我的解决方案:

我通过强制推送“hg push -f”解决了这个问题,从而在“mine”分支(在主存储库中)上创建了两个头,然后使用“hg strip”扩展名剥离了额外的头。这是在我推送之后从主存储库完成的,这可能并不完美,但它适用于这些目的。

需要强制推送来添加我的新变更集(新的“我的”分支),而条带(必须在推送后在主存储库上完成)删除旧的“我的”分支。事实证明,在我的本地存储库中剥离“我的”分支并没有什么不同,因为剥离的变更集仍然存在于主存储库中(因此需要在推送后剥离它们)。

如果有更好的解决方案(或更好的表达问题的方式),我很想知道。

于 2013-06-25T22:00:04.547 回答