我今天遇到了我的第一个善变问题。我在我的回购中,我修改了一个文件而且我做了一个
hg commit
hg pull
接下来是
hg更新
hg rollback
修复我所做的事情,(但实际上我没有推动任何东西) 问题是,当我做拉(我应该在提交之前做,头改变了,所以hg头看起来像:
- Modif from yesterday
- My modif
- Modif from last week
现在我看到有人也做了另一次修改(通过http界面)。我应该怎么做才能修复我的本地仓库(如果可能的话修改我的总结)并在另外两个修改后推送它。
非常感谢。安静的混乱,在我的“单人”回购中更容易..
答案 0 :(得分:3)
您当地的回购不需要“修理”。这是一个非常标准的案例,如果你经常使用Mercurial,你会经常看到。
问题是 多头 。
你可以合并你的头,假设你的工作目录是你的版本而且只有另一个头:
hg merge
这将导致合并变更集(就像您要跨分支合并一样)。
或者您可以启用rebase extension将您的版本重新定位到分支的顶端(另一个头):
hg rebase --source<YourVersionNumber> --dest<TipVersionNumber>
这将不导致合并变更集,并且只会将您的更改移植到您指定的变更集之上,就好像它们始终是该变更集所生成的(因此,变基或“新”基础)。
多个头是一个有趣的内部分支分支...你可以继续检查你自己头上的东西,并使用hg update
在头部之间切换。我们在服务器上为每个分支阻止多个头,因此我们的推送会失败。我建议将多个头保持在本地,因为它们不像分支那样清晰。
我倾向于以两种方式之一使用Mercurial:
我坚硬而快速的规则:如果我不能使用rebase,我把它放在一个由main生成的分支上。