3

我在 Bitbucket 上分叉了别人的存储库并进行了一些更改(并将它们推送到我的分叉存储库)。与此同时,原作者进行了实质性更改(几乎是重写)。

我想将我的仓库更新为与他的完全相同(但我的更改仍然存在于该标签上),这样他可以轻松地拉出我的新更改,而我之前所做的更改不会影响任何东西。

我将他的更改提取到我的本地版本中,这让我有 2 个头。我只想把他的头作为小费/默认值。我试图通过执行以下操作来解决这个问题(基于一些 SO 答案):

hg update -r [myrev]
hg commit --close-branch
hg update -r [hisrev]

似乎使我处于我想要的状态。我的工作目录看起来像他的。但是,当我尝试这样做时,hg push我被告知这将创建多个远程头,我不确定这是否是我想要的(这个消息听起来很可怕!)

那么,我做对了吗?我应该强制推动吗?这会做我想要的吗(例如,保留我的更改副本,以便我可以访问它们,但通常不会干扰?)。如果是这样,这是实现这一目标的最佳方式吗?

4

1 回答 1

5

封闭分支上的负责人仍然是负责人,因此如果您想推送这些更改,您将需要--force.

另一种选择是将该头合并到您希望成为默认分支的内容中,但不选择任何更改。这可以使用以下方式以非交互方式完成:

hg update [hisrev]
hg --config ui.merge=internal:local merge [myrev]
hg commit

你将只剩下一个头,它只有他的内容,但你的内容仍然存在于历史中。

于 2011-05-21T19:17:52.007 回答