1

我今天遇到了我的第一个反复无常的问题。我在我的仓库中,我修改了一个文件,我做了一个

hg commit
hg pull

其次是 hg 更新 hg 回滚

修复我所做的,(但实际上我没有推动任何东西)问题是当我进行拉动时(我应该在提交之前做,头部改变了,所以 hg 头部看起来像:

- Modif from yesterday
- My modif
- Modif from last week

现在我看到有人也做了另一个修改(通过http接口)。我应该怎么做才能修复我的本地仓库(如果可能的话,修改我的摘要)并在其他 2 个修改之后推送它。

非常感谢。安静令人困惑,在我的“单人”回购中更容易..

4

1 回答 1

3

您的本地仓库不需要“修复”。这是一个非常标准的案例,如果您经常使用 Mercurial,您会经常看到。

问题是多头

您可以合并您的头,假设您的工作目录是您的版本并且只有另一个头:

hg merge

这将导致合并变更集(就像跨分支合并一样)。

或者您可以启用rebase 扩展以将您的版本重新定位到分支的尖端(另一个头):

hg rebase --source<YourVersionNumber> --dest<TipVersionNumber>

不会导致合并变更集,并且只会将您的更改移植到您指定的变更集之上,就好像它们一直是从该变更集诞生的(因此变基或“新”基)。

多头是一种有趣的内部分支分支......您可以继续检查自己的头并在头之间使用hg update. 我们在服务器上阻止每个分支的多个头,所以我们的推送会失败。我建议将多个头保持在本地,因为它们不像分支那样清晰。

我倾向于以以下两种方式之一与 Mercurial 合作:

  1. 如果工作规模很大,我会将其分支并遵循持续集成实践(不断将主分支合并到我自己的分支等)。然后,当我对最终结果感到满意时,我会重新合并回 main。
  2. 如果工作规模很小,我将简单地针对主分支和“合并”头部每隔一段时间进行一次。我说“合并”,因为我通常使用变基。如果更改很简单并且不太可能发生冲突,则重新设置基础效果很好。

我的硬性规定:如果我不能使用 rebase,我把它放在 main 的一个分支上。

于 2012-04-24T10:27:16.150 回答