32

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

请评论团队为使 git 工作所需的技术能力。我见过聪明的人爬上学习曲线,但仍然掉头发。任何人都可以攀登这条曲线,还是 git 不适合所有团队?

当然,我也想听听有关功能优势、工具支持、集成其他系统(CI 等)的信息……

(这似乎是一个显而易见的问题,但尽管进行了几次搜索,但我没有找到此问题的副本)

编辑链接到好的资源也很感激。

4

8 回答 8

19

在我的头顶上:

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

主要的困难是在不同的 repo 之间建立一个工作流,而不破坏已经发布的历史(推送到公共 repo)。

替代文字
(来源:infoq.com

特别是rebase一开始可能很难正确使用,因为它确实重写了分支的历史,并且改变了与之关联的 SHA1:到公共分支,这意味着来自其他开发人员的大量合并它。

于 2009-02-13T08:27:37.690 回答
8

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

也就是说,git 有很多东西可以提供。无需深入了解 git 魔法,您就可以快速学会利用它的一些最受欢迎的方面:无需将上游推送到主存储库即可在本地签入的能力,以及几乎完全无忧的分支和合并。

只需几个基本的命令,您就可以获得非常令人满意的 git 体验。

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

于 2009-02-13T08:24:44.203 回答
5

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

于 2010-02-26T15:03:40.707 回答
4

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

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

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

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

一个值得一试的工具是review board,它是一个很棒的团队代码审查工具,并且似乎有一个 git 插件。

于 2009-02-13T09:04:58.007 回答
3

一个月前我刚开始使用 git 并且喜欢它。它对团队和个人都快速且易于使用。学习并不难,我不需要学习任何新的技术技能来使用 git。我知道它支持从 CVS/SVN 迁移。最好的部分是,如果您愿意,您仍然可以维护 CVS/SVN 风格的工作流程。

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

我希望这对您有所帮助,并且您喜欢使用 git。

于 2009-02-13T08:29:27.000 回答
3

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

于 2010-03-01T05:53:46.313 回答
2

GIT的故事是FOSS历史上的经典。在 Wikipedia 中查看 Git 的历史。该故事的标签:BitKeeper、Andrew Tridgell、Torvalds、Git、2 天内自托管

好吧,不是答案,具有 FOSS/Hacker 态度的人肯定会喜欢阅读它。

于 2010-02-26T14:44:55.010 回答
2

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

将 git 用于您自己的语言环境修订控制(对于您使用 RCS 的同类事物)我认为比使用 RCS 更容易。

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

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

我经常一边做更大的重构工作,一边做较小的修复。我发现这很难与 perforce 兼顾。但是使用 git,我能够为我正在做的不同实验、重构和错误修复提供大量小型语言环境分支。

所以对我来说 git 的最大卖点是:

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

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

于 2009-02-19T08:56:13.377 回答