我很高兴使用git,但最近出于好奇心而根据朋友的观点一直在探索Mercurial,认为它在某些方面更好。
然而,我注意到的第一件事是,Mercurial似乎没有像git那样的索引。我倾向于进行更多更改,然后我应该在编辑文件后使用git add -p
将修补程序拆分为单独的提交。如果更改在不同的文件中,我可能会使用MQ,但是看起来我需要先撤消更改。
是否可能有Mercurial的扩展程序提供类似索引的功能?
答案 0 :(得分:38)
分割变更集有两种方法,具体取决于您是否已经提交了要分割的变更:
有选择地从工作目录提交更改(如果尚未提交更改):
hg record
。 (这类似于使用git commit --patch
。)要拆分现有的变更集(如果您已提交更改):
使用hg histedit
并在要修改的变更集上选择编辑选项。
(这类似于使用git rebase -i
。)
使用hg record
有选择地将更改作为单独的更改集提交。
完成后使用hg histedit --continue
。其余未提交的更改将包含在最终更改集中。
正如其他人所提到的,您可以在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/