2010-11-12 58 views
0

可能重复:
Why is Git better than Subversion?为什么这么多开源项目从SVN转移到git?

我跟许多不同的开源项目,主要围绕Java技术,但这个问题可能是普遍的。我注意到在过去6个月左右,很多项目正在从颠覆转向git。

我的问题是为什么? git对颠覆有什么好处,这些优点是否适合商业世界(即我应该用git来替换我的cvs和svn仓库)?

+2

http:// stackoverflow可能存在重复。com/questions/871/why-is-git-sub-subversion – cdhowie 2010-11-12 21:31:50

+0

由于SVN很糟糕? – 2010-11-12 22:08:51

+0

项目正在从SVN转移到* git *,而不是* github *,尽管他们当然可以使用github作为其托管。编辑的问题反映了这一点。 – Cascabel 2010-11-12 22:47:37

回答

3

来吧,你检查了谁写的git? Linus Torvalds本人!

现在严重的是,我认为主要有3到使用git的几大理由:

1)克隆模式:使用Subversion,你执行“结账”,这是,其实只是一个快照在特定的时间内储存。每个其他操作(提交,分支,检查日志,与以前的版本比较)都需要网络访问原始存储库。使用git有效地将整个存储库“克隆”到本地计算机,允许您执行一系列本地提交,回滚,浏览历史记录等,而无需再次汇集服务器。对于大多数开源开发人员来说,这是一件好事。 2)分叉模型:在Subversion的日子里,创建一个项目的分支就是这样一个灾难性的事件。通常意味着,在几个月内,其中一个项目将会死亡。有了git(并且Github在这方面提供了很多帮助),叉子既简单又健康,开发人员可以通过两种方式合并更改,并且给定项目的许多分支可以共存。 3)部分提交:并不是很多人使用它,但是您可以选择只提交更改文件的一部分(使用git add -p)。它节省了很多时间在微妙的情况下。

当然,为什么git(或一般DVCS)比Subversion好得多,但对我来说,这3个就是杀手。

1

因为很多程序员认为分布式源代码控制管理系统(比如GIT)要优于需要集中服务器的系统。

+0

这与分散化没有多大关系,而是权力下放和权力分散。如果您意识到自己犯了一个错误(在提交之前),则可以重写历史记录,您可以在本地进行分支和合并,而无需远程服务器知道任何事情等等。 – cdhowie 2010-11-12 21:33:06

1

有几个原因

  • 的Git,作为一个分布式系统,被认为是更好的。

  • 你不需要读写权限和git-world中的管理麻烦。

  • 对项目的贡献比较容易。

  • Git最终会让您更好地控制主存储库中的内容,以及哪些不是。

大多数酷酷的优势可以传播到我认为的商业世界。但是如果你想进行这个转变,开始会变得很慢。

1

嗨,请不要错过github和git之间的区别。

Github只是免费的git服务器。

为什么github? - 因为您只需点击鼠标即可轻松分叉和合并项目。

这对我给予的商业价值: - 任何人都可以做一些工作,我的项目,问我他的合并变化,不需要特殊的知识,请求历史容易看到... - 通过观看项目的变化使用一个帐户为他们所有人 - 您也可以关闭存储库不公开(有些费用)。 - 可能还有更多,只是访问github

什么git本身给予请看其他人的回应。

1

坦率地说,我不知道。我发现git有一个模糊的命令语法,并且通常很烦人,而且很难使用。 git速度很快,但其他DVCS也同样快。我认为总体而言,有比git更好的DVCS,我认为使用更合理。

现在,为什么人们从Subversion转向DVCS是一个显而易见的问题。分布式版本控制系统在各方面都更好。

在Subversion中,我无法检查出所有事情,做出自己的本地更改并检查它们。我必须经历扭曲,例如定期复制事务到供应商分支,并合并或其他荒谬的事情。

这有很多好处。成为贡献者的障碍变得更低。该项目变得更容易有用叉。跟踪项目维护人员不想要的更改,但是您的操作变得更容易。

此外,当您在笔记本电脑上检查项目时,您的USB存储棒和您的系统在工作时,现在有一个明确且合乎逻辑的方式来允许检查所有这些地点,而不考虑互联网连接并且能够加入所有稍后再备份。

它还可以为整个源代码库及其所有历史记录提供出色的分布式备份。 DVCS存储库几乎不可能失去重要的历史记录,因为存在如此多的副本。

有些人认为Subversion的“中央控制”是一件好事。但是,真的,你根本没有任何控制权。你所做的只是让那些不属于你决定为提交者的神圣组织的人变得非常不方便。所有这些人都可以制作自己的源代码副本,甚至整个历史。我经常将项目的整个Subversion历史记录拖入DVCS中,以便处理它。

一个使用DVCS的项目拥有一个权威的存储库,与“集中控制”的Subversion存储库一样具有权威性。分布式模型是集中模型的严格超集。

1

这是因为GIT使分支和合并无缝。我没有听说SVN有关分支和合并的任何赞扬。 GIT为您提供了完全自由的自己的提交,以及您想要推送到公共存储库的内容。