@
ElmerZhang hg mq 一点都不 nb ,只不过 hg CLI 的一些基础设计真没 git CLI 设计得那么傻缺,拿过来开箱即用而体现出日用体验优势了。
要干掉也是 hg 整个干掉 git ,不过 GitHub dssq 呗……(这种 SO/YC 之类的一搜一大把就不具体引用了。)要我说就是绝大多数日常用户甚至都还没到用出差别的水平(除了 hg 存小文件效率和 git 断点续传更欠扁的个别问题),用哪个基本就是随大流,git 更网红所以更常见罢了。
另外现在 mq 是 hg 官方都不建议用了(
www.mercurial-scm.org/wiki/MqExtension )。毕竟 mq 不是为了体现竞品傻缺发明出来的,而是为了替代早年 hg 没有 rebase 。这又是因为 hg 早年排斥修改历史的传统。然后这里 hg 还是怂了,于是有了 strip 有了 histedit 有了 rebase ,所以修改历史这个最主要的目的就用不上 mq 了。mq 仍然有用,主要适合专业对付 patch series 的 maintainer ,而 git 核心用户一开始也强调对了这个需求,并且设计得并不傻缺——直接开 branch ( hg 对应 git branch 的 bookmark 也不是一开始有的),处理 patch queue 时跟 hg mq 的实际日常用法大同小异;种种因素使 git 中一直有(不严格)对应的功能,但具体用法反而没那么大存在感(间接增长了类似 OP 这里的问题)。
这里鼓励 git 多 commit 也不可能是一个 branch 上蹲点(这里也有不少人表示新开 branch 算是常识了),所以核心用法跟 mq 差不多(只不过不强调是 patch )。