git有什么好处?

时间:2009-02-13 08:23:26

标签: git version-control dvcs

对于来自更传统的VCS背景(CVS / SVN)的人来说,学习和迁移到git的最有说服力的理由是什么?

请评论团队所需的技术能力,以便让git工作。我见过聪明的人爬上学习曲线,但仍然失去了一些头发。任何人都可以攀登这条曲线,或者git不适合所有球队吗?

当然,我也希望了解功能优势,工具支持,集成其他系统(CI等)......

(这似乎是一个显而易见的问题,但尽管进行了一些搜索,但我没有找到重复的内容)

编辑赞赏良好资源的链接。

8 个答案:

答案 0 :(得分:19)

在我的头顶:

  • 其分布式方面(每个开发人员都有一个存储库副本)
  • 快速处理复杂合并的能力
  • 从任务切换到任务的可能性,搁置他的工作,回到它......
  • 便宜的分支(即时切换:它只是在文件中写入一些内容!并且它不会将分支视为像SVN那样的目录)

主要的困难是在不同的回购之间建立一个 workflow ,而不会破坏已经发布的内容的历史(推送到公共回购)。

alt text

首先, rebase 可能很难正确使用,因为它确实重写了分支的历史记录,并且更改了与之关联的SHA1:到公共分支,意味着来自其他开发商的大量合并。

答案 1 :(得分:8)

Git很深,起初可能很棘手。我想说这绝对不适合所有人,特别是如果你有设计师或其他非技术人员需要办理登机手续。在我们当前的项目中,我们运行了一个svn后端,三个开发人员选择使用git,而两个继续使用svn,并且非常满足并且非常高效。

那就是说,git可以提供很多东西。在没有深入了解git魔法的情况下,您可以快速学会利用其中一些最受欢迎的方面:能够在本地检入而无需向上游推送到主要仓库,并且几乎完全没有麻烦的分支和合并。

使用基本的一些命令,您可以获得非常令人满意的git体验。

在那里的所有资源中,Scott Chacon的Getting Git让我了解了git的好处,并给了我推动学习曲线陡峭部分的动力。

答案 2 :(得分:5)

Github!真的,我只是学会了使用github欣赏git。

答案 3 :(得分:4)

Git非常快,并且以非常紧凑的方式存储存储库(比如svn中相同代码库+历史记录的大小的十分之一到百分之一)。 Git(以及大多数分布式VCS)为您提供廉价的分支,这些分支可以轻松地生成,处理和合并。这一切都发生在本地,团队成员不会被队友的正在进行的工作分心,除非有积极的努力来分享它。

迁移到分布式VCS将导致一些开发人员喜欢的开发风格的一些变化,但其他人可能会讨厌。毫无疑问,git是一个复杂的野兽,其中有许多途径可以达到相同的结果。在引导团队迁移到git时,您需要花一些时间学习这些路径,然后为常见场景勾画出工作流程和命令备忘录。

我建议您首先熟悉客户,与github或类似工具交谈。

关于设计师和使用它的技术人员的问题,我会说工作流程和命令是否有很好的文档记录,然后通过一些培训,他们应该能够快速掌握它。他们是否会欣赏它是另一个问题! : - )

值得一试的一个工具是review board,它是一个出色的团队代码审核工具,似乎有一个git插件。

答案 4 :(得分:3)

我刚开始使用git一个月后就爱上了它。它既快速又易于使用,适用于团队和个人。这不是很难学,我不需要学习使用git的新技术。我知道它支持从CVS / SVN迁移。最棒的是,如果您愿意,仍然可以维护CVS / SVN样式的工作流程。

我建议查看git wiki:http://git.or.cz/gitwiki 和官方网站:http://git-scm.com/

我希望这会有所帮助,你喜欢使用git。

答案 5 :(得分:3)

我意识到这是一个关于Git的问题,但OP应该意识到许多好处都适用于所有主要的分布式版本控制系统。 Git,Mercurial和Bazaar都有自己的优点和缺点,所以你应该研究这三个,并决定哪一个最适合你的工作方式和你的项目。

答案 6 :(得分:2)

很多人都在谈论使用git有多复杂,但如果你坚持使用非常简单的使用模式,那么git并不比RCS更复杂。

使用git作为您自己的语言环境修订控件(对于您将使用RCS的相同类型的东西),我认为比使用RCS更容易。

当然,当你将它用于有大量人员和大量分支等的大型项目时,它可能比传统的版本控制系统更复杂。

就我个人而言,我主要将其用于个人项目以及在工作中进行本地修订控制。我们在工作中使用perforce,他们对我们可以签入的分支数量非常严格。我们必须检查已完成的,可编译的,可测试的代码块。

我经常在做更大的重构工作,同时做更小的修复工作。我发现很难与perforce一起玩耍。但是使用git我可以拥有大量的小区域分支用于不同的实验,重构和我正在做的bug修复。

对我来说,git的主要卖点是:

  • 支持区域设置签入(我可以在提交主存储库之前逐步检查我的工作。
  • 轻松方便地制作大量的语言分支并在它们之间切换。

最后一点的原因是git将所有分支保存在同一目录中,因此您可以使用git命令在它们之间进行交换并保持相同的位置。我喜欢这样,因为这意味着每次分支时我都不需要为我的IDE设置配置文件以获得新目录,而且我不会浪费大量空间来处理疯狂数量的分支。

答案 7 :(得分:2)

GIT的故事是FOSS历史上的经典故事。 请参阅维基百科中的Git的history。 该故事的标签: BitKeeper,Andrew Tridgell,Torvalds,Git,2天内自托管

嗯,不是答案,有FOSS /黑客态度的人肯定会喜欢读它。