Git a / o DVCS的电梯间距

时间:2009-03-24 13:44:05

标签: svn git

想象一下,你有一个朋友通过电话(而不是VoIP)问:“Git有什么特别之处?我使用Subversion很好。”为了描述使用像Git这样的DVCS的优势,您的“电梯间距”是什么?

6 个答案:

答案 0 :(得分:2)

已经a question similar to this了。此外,Eric Sink的number articles DVCS约为{{3}}。对其他问题和文章的回答都有助于建立明智的决定。简单地说一个比另一个更好可能没有帮助(可悲的是,这似乎是Linus在这方面所做的一切,这并不能真正说服人们 - 至少不是我:)。)。 p>

答案 1 :(得分:2)

对我而言,你可以在DVCS中做的主要事情之一就是在SVN中运行不正常的git如下:

1)针对正在开发的各种功能,从主干创建多个开发分支。

2)在完成任一功能分支并准备合并到主干之前,将代码从一个功能分支合并到另一个功能分支。

3)稍后,将功能分支合并为trunk。

很高兴将新功能分解为单独的分支,以便在功能完成之前干线保持干净。但是,不可避免地会遇到这样一种情况,即在一个功能分支上工作的团队编写了一些团队在另一个功能分支上需要的代码。如果您使用SVN跨功能分支合并此代码,您将无法在以后合并到主干。 Git避免了这个问题。

这是另一个好处......贵公司决定将功能的开发外包给印度承包公司。或者,您的专业服务组需要为客户添加功能,并且该功能将来可能会产品化。您真的不希望向印度承包商或PS组提供对SVN的写访问权限。因此,他们必须在源代码控制之外构建代码,您必须自己合并,在没有SVN任何帮助的情况下自己检测和解决任何冲突,并在此过程中丢失所有承包商的签入历史记录。 / p>

但是使用git,您只需向承包商或PS组提供存储库的副本,他们就可以像开发人员一样承诺。稍后,您可以使用git的功能将更改合并回git存储库。 Git会发现冲突,它会保留历史。

最后,关于git的最酷的事情之一就是你真的不必说服你的朋友它比SVN更好。由于git与SVN集成得非常好,您的公司/朋友可以愉快地使用SVN,同时您乐意使用连接到SVN的git。

答案 2 :(得分:1)

让他工作/结账/提交/检查日志/恢复而无需访问他的网络存储库(例如,在飞机上)。

答案 3 :(得分:1)

这是blub的问题。

您可以在集中式系统中执行任何操作,我可以在我的分布式系统中执行此操作,但是我的日常DVCS任务使我成为一个非常高效的开发人员无法在您的集中式系统中执行 - 而您无法理解,因为你认为世界存在你的系统对你的限制。

答案 4 :(得分:0)

两个词:合并,分支。

Git中的合并和分支比其他任何地方都更容易。 Git需要解决一个问题:合并由数千名很少处于同一版本的开发人员编写的代码。现在在SVN中试试这个:

  1. 提交您的工作副本(不破坏其他任何人的构建)
  2. 获取最新版本(不会损坏您的工作副本)
  3. 将代码与任意目标版本合并,同时能够回滚到您的工作副本或目标版本,而不会丢失三者中的任何一个(工作副本,目标版本,两者之间的合并)。
  4. 可以使用SVN完成,但在Git中,这是默认的操作模式,因此最简单。

答案 5 :(得分:0)

对于开发人员来说,DVCS和SVN之间最重要的区别是速度

当在SVN中花费30秒或4分钟的命令在Git或Mercurial或Bazaar中花费1或2秒时,这对开发人员来说是一个巨大的差异。版本控制成为次要任务,而不是工作流程的中断。你不需要添加咖啡因和重新调用你的pavlovian仪式开始工作;你保持专注,不要失去它。

其他好处很重要,但相比之下它们是次要的:

  • 更简单,更灵活的分支和合并,更少,更简单的合并冲突
  • 自由溴受到网络访问和服务器正常运行时间的限制
  • 与您的工作流程相匹配的repo结构