Mercurial和Git有什么区别?

726

我已经使用过Windows上的Git (msysGit) 一段时间了,并且我喜欢分布式源代码控制的理念。最近,我开始看Mercurial (hg),它看起来很有趣。然而,我无法理解hg和git之间的区别。

是否有人进行过git和hg的对比?我想知道hg和git之间的区别,而不必卷入支持者讨论。

25个回答

2

又一篇有趣的Mercurial和Git比较文章:Mercurial vs Git。主要关注点在于内部机制对分支过程的影响。


2

Mercurial官网很好地描述了这两个系统之间的相似之处和不同之处,并解释了词汇和基本概念上的区别。作为长期使用git的用户,这确实帮助我理解Mercurial的思维方式。


2
如果你正在从SVN迁移,请使用Mercurial,因为它的语法对于SVN用户来说更容易理解。除此之外,两者都是不错的选择。但在选择之前,请查看GIT教程HGinit

1

1

有些人认为版本控制系统必须很复杂。他们鼓励在领域内发明术语和概念。他们可能会认为,该领域的众多博士学位是有趣的。其中可能包括设计Git的那些人。

Mercurial采用了不同的心态设计。开发人员不应太关注版本控制系统,而应该把时间花在主要功能上:软件工程。Mercurial允许用户使用并愉快地滥用系统,而不会让他们犯下任何不可恢复的错误。

任何专业工具都必须配备一个清晰设计且直观的CLI。Mercurial用户可以通过发出简单的命令完成大部分工作,而无需任何奇怪的选项。在Git中,双破折号和疯狂的选项是常态。如果您是CLI人员(老实说,任何自重的软件工程师都应该是),则Mercurial具有显着优势。

举个例子,假设您因失误提交了一项任务。您忘记编辑某些文件。在Mercurial中撤消操作很简单,只需键入:

$ hg rollback

然后您会收到一条消息,系统会撤消您的最后一笔交易。

在Git中,您必须键入:

$ git reset --soft HEAD^

好的,假设你已经知道了重置是什么。但是除此之外,你还需要知道"--soft"和"--hard"重置是什么(有直觉猜测吗?)。哦,当然别忘了最后的'^'字符!(现在里奇的名字是什么...)

Mercurial与kdiff3和meld等第三方工具的集成也更好。生成补丁,合并分支都不会太麻烦。Mercurial还包括一个简单的http服务器,您只需键入

hg serve

就可以让其他人浏览您的存储库。

总之,Git以一种更复杂、CLI远不如的方式实现了Mercurial所做的事情。如果您想将项目的版本控制系统变成科学研究领域,请使用Git。如果您想完成版本控制系统的工作而不太关心它,并专注于您的真正任务,请使用Mercurial。


1
实际上,您可以在git中使用别名命令,这使得CLI的使用变得不那么复杂。在这个SuperUser(StackExchange)问题中有很多这样的命令。 - Spoike
1
确实,您也可以编写 shell 脚本来处理一些常见任务。最终,您开始意识到您正在构建一个包装器 CLI 来处理具有设计不佳和反直觉 CLI 的 VCS。而且不仅如此,Git 引入了大量可疑可用性概念,用户最终被迫学习和理解这些概念,以便在文档和 CLI 消息中感到舒适。 - Kostas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接