我已经在Windows上使用git有一段时间了(使用msysGit),我喜欢分布式源代码控制的想法。就在最近,我一直在关注Mercurial (hg),它看起来很有趣。然而,我无法理解hg和git之间的区别。

有人把git和hg放在一起比较吗?我很想知道hg和git有什么不同,而不需要加入粉丝的讨论。


当前回答

还有谷歌的对比(虽然有点老,是2008年做的)

http://code.google.com/p/support/wiki/DVCSAnalysis

其他回答

I'm currently in the process of migrating from SVN to a DVCS (while blogging about my findings, my first real blogging effort...), and I've done a bit of research (=googling). As far as I can see you can do most of the things with both packages. It seems like git has a few more or better implemented advanced features, I do feel that the integration with windows is a bit better for mercurial, with TortoiseHg. I know there's Git Cheetah as well (I tried both), but the mercurial solution just feels more robust.

因为它们都是开源的(对吧?)我认为这两款游戏都不会缺少重要的功能。如果某样东西很重要,人们就会提出要求,就会编写代码。

我认为对于常见的实践,Git和Mercurial已经足够了。它们都有使用它们的大型项目(Git -> linux内核,Mercurial -> Mozilla基金会项目,当然都在其他项目中),所以我不认为它们真的缺少什么。

也就是说,我对其他人对此的看法很感兴趣,因为这将为我的博客努力提供一个很好的来源;-)

有些人认为VCS系统必须是复杂的。他们鼓励在这个领域发明术语和概念。他们可能会认为这个领域的众多博士会很有趣。其中可能就是那些设计Git的人。

Mercurial是用不同的心态设计的。开发人员不应该太关心风险投资,他们应该把时间花在他们的主要功能上:软件工程。Mercurial允许用户愉快地使用和滥用系统,而不允许他们犯任何不可恢复的错误。

任何专业工具都必须带有设计清晰、直观的CLI。Mercurial用户可以通过发出简单的命令来完成大部分工作,而不需要任何奇怪的选项。在Git双破折号中,疯狂的选项是常态。如果您是一个CLI人员(老实说,任何有自尊心的软件工程师都应该是),那么Mercurial就有很大的优势。

举个例子,假设你犯了一个错误。你忘了编辑一些文件。要撤消在Mercurial中的操作,只需键入:

$ hg回滚

然后,您将收到一条消息,系统将撤销您的上一个事务。

在Git中,你必须输入:

$ git重置-软头^

假设你知道什么是重置。但除此之外,你还必须知道“软”和“硬”重置是什么(有什么直观的猜测吗?)哦,当然,不要忘记最后的'^'字符!(以里奇的名义……)

Mercurial与第三方工具(如kdiff3和meld)的集成也更好。生成你的补丁合并你的分支没有太多的麻烦。Mercurial还包括一个简单的http服务器,您可以通过输入激活它

hg服务

并让其他人浏览您的存储库。

归根结底,Git做了Mercurial做的事情,但方式要复杂得多,使用的CLI也差得多。如果您想将项目的VCS转换为科学研究领域,请使用Git。如果您希望在不太关心的情况下完成VCS工作,并专注于您的实际任务,请使用Mercurial。

在versioncontrolblog上有一个动态比较图表,你可以比较几种不同的版本控制系统。

这是git, hg和bzr之间的对比表。

以下文章可能会有所帮助:

Git vs Mercurial:请放松(Git是百战天龙,Mercurial是詹姆斯·邦德) Mercurial和Git的区别

编辑:把Git和Mercurial比作名人似乎是一种趋势。这里还有一个:

Git是Wesley Snipes, Mercurial是Denzel Washington

如果从SVN迁移,请使用Mercurial,因为它的语法对SVN用户来说更容易理解。除此之外,任何一种选择都不会错。但是在选择之前一定要检查GIT教程和HGinit。