在mercurial中拆分更改集的最简单方法

时间:2011-03-31 14:53:20

标签: mercurial

我很高兴使用git,但最近出于好奇心而根据朋友的观点一直在探索Mercurial,认为它在某些方面更好。

然而,我注意到的第一件事是,Mercurial似乎没有像git那样的索引。我倾向于进行更多更改,然后我应该在编辑文件后使用git add -p将修补程序拆分为单独的提交。如果更改在不同的文件中,我可能会使用MQ,但是看起来我需要先撤消更改。

是否可能有Mercurial的扩展程序提供类似索引的功能?

3 个答案:

答案 0 :(得分:38)

分割变更集有两种方法,具体取决于您是否已经提交了要分割的变更:

有选择地从工作目录提交更改(如果尚未提交更改):

  • 使用hg record。 (这类似于使用git commit --patch。)

要拆分现有的变更集(如果您已提交更改):

  1. 使用hg histedit并在要修改的变更集上选择编辑选项。 (这类似于使用git rebase -i。)

  2. 使用hg record有选择地将更改作为单独的更改集提交。

  3. 完成后使用hg histedit --continue。其余未提交的更改将包含在最终更改集中。

  4. 正如其他人所提到的,您可以在hg record的位置使用hg crecord

答案 1 :(得分:22)

你说没有git风格的索引是正确的。您可以使用hg record(与Mercurial一起发布)或hg crecord。两者都允许您在提交时选择每个文件或每个块。 crecord更复杂,但需要诅咒。

更新(2016-11-19)

现在可以在核心Mercurial中使用crecord扩展的功能。此外,使用更好地集成。提交所选帅哥的首选方式是

$ hg commit --interactive

默认情况下,其行为类似于旧的记录命令。要像旧的 crecord 命令一样获取基于curses的界面,请在HGRC中设置:

[ui]
interface = curses

答案 2 :(得分:1)

你可能有兴趣阅读这篇文章解释另一个mercurial扩展,补丁队列,就像git的类固醇索引一样:

http://stevelosh.com/blog/2010/08/a-git-users-guide-to-mercurial-queues/