我已经在Windows上使用git有一段时间了(使用msysGit),我喜欢分布式源代码控制的想法。就在最近,我一直在关注Mercurial (hg),它看起来很有趣。然而,我无法理解hg和git之间的区别。
有人把git和hg放在一起比较吗?我很想知道hg和git有什么不同,而不需要加入粉丝的讨论。
我已经在Windows上使用git有一段时间了(使用msysGit),我喜欢分布式源代码控制的想法。就在最近,我一直在关注Mercurial (hg),它看起来很有趣。然而,我无法理解hg和git之间的区别。
有人把git和hg放在一起比较吗?我很想知道hg和git有什么不同,而不需要加入粉丝的讨论。
当前回答
我意识到这不是答案的一部分,但在这一点上,我也认为像NetBeans和Eclipse这样的平台的稳定插件的可用性在某种程度上决定了哪种工具更适合这项任务,或者更确切地说,哪种工具最适合“你”。也就是说,除非你真的想用cli方法。
Eclipse(以及基于它的一切)和NetBeans有时在远程文件系统(如SSH)和文件的外部更新方面都有问题;这也是为什么你希望你选择的任何东西都能“无缝”工作的另一个原因。
我现在也在为自己回答这个问题。我已经把候选人归结为Git或Mercurial ..感谢大家在没有宗教色彩的情况下就这个话题提供有用的意见。
其他回答
如果您对Mercurial和Git的性能比较感兴趣,请参阅本文。结论是:
Git和Mercurial都取得了不错的成绩,但在速度和存储库大小之间进行了有趣的权衡。Mercurial在添加和修改方面都非常快速,同时还能控制存储库的增长。Git也很快,但它的存储库在修改文件后增长非常快,直到重新打包——而这些重新打包可能非常慢。但是打包的存储库比Mercurial的要小得多。
mercurial和git的另一个有趣的比较:mercurial vs git。 主要关注内部结构及其对分支过程的影响。
有些人认为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。
如果你是一名Windows开发人员,正在寻找基本的断开连接的版本控制,那么使用Hg。我发现Git难以理解,而Hg很简单,与Windows shell集成得很好。我下载了Hg,并遵循了这个教程(hginit.com) -十分钟后,我有了一个本地回购,并重新开始我的项目。
git和mercurial之间有一个巨大的区别;表示每次提交的方式。Git将提交表示为快照,而mercurial将它们表示为差异。
这在实践中意味着什么?在git中,很多操作都更快,比如切换到另一个提交,比较提交等等。特别是当这些提交距离很远的时候。
说真的,mercurial的方法没有任何优势。