2012-08-07 100 views
0

也许我错过了一些重要的东西,但我想切换到另一个分支,而不必先提交我目前拥有的东西。我意识到我可以使用hg update -C,并简单地删除当前的更改,但这不是我想要做的。HG更新需要分支合并

我的问题是,我有几个分支,我正在同时工作,不想填补我的历史与大量的小提交。有没有一个中间的基础,我可以存储我当前的分支,而无需承诺在某些情况下做出的每个小改动。

回答

1

除了已经提到的shelve选项的选项以及历史记录中有很多小的变更集外,您还可以使用collapse扩展名来获取这些小的变更集,并将它们合并为一个较大的变更集。这非常适合您描述的场景 - 修正拼写错误等。

使用Mercurial 2.1及更高版本,折叠扩展将尊重phases,因此您不会无意中折叠已发布的更改集。

一般来说,我会主张在一个单独的命名分支上做所有这些小改动,然后在你感到高兴的时候合并到默认(或其他功能)分支。

+0

顺便说一下,崩溃扩展现在可以通过'hg rebase --collapse -r --dest 中的第一个rev的父亲进行大量替换。 – 2012-09-21 21:11:44

2

shelve extension可以做你想做什么:

从页面:

暂时离开藏匿的变化。您可以选择要搁置的更改的确切人群 。

汞柱搁置

暂时离开藏匿的变化。所有的hunks将自动被选中 。

汞柱搁置--all

获取更改回复到工作目录的。

汞柱取消搁置

如果使用--name选项,你可以搁置在不同的货架上不同的变化。

但是,很多小提交有什么问题?如果这些更改独立,那么他们可能应该承诺提交,如果您想保持清醒的话,您确实不希望在签入时插入多个问题,特别是如果您以后要将功能合并到其他仓库中时更是如此。

+0

在许多情况下,我的提交包含拼写错误和样式更改。 – Blackninja543 2012-08-07 20:29:59

0

让每个分支签出它自己的克隆。你可以在它们之间切换而不需要做任何事情。