git、svn的区别

RenSir
  • 89

对于snv,现在大部分公司都在用,那么git呢,我最近在关注,你们觉得哪个好用,哪个功能更强大呢,它们有什么区别呢???

回复
阅读 8.9k
7 个回答

svn 是集中式版本管理系统,是更为传统的 CVS 的继承者。它是典型的 C/S 结构:有一个中心仓库,里面保存了项目代码的不同版本。而开发人员在本地在任何时候只有这个仓库中的一个版本,如果想要其他版本,或者同步版本,必须和这个中心服务器通信才能获得。想象一个极端的场景,如果中心服务器的硬盘报销,你无法从自己的硬盘上重建项目的所有版本,即使你是这个项目的唯一开发者,所有版本都在你的硬盘创建。

而 git 是分布式版本管理系统,就是说没有中心服务器。你会给一个项目的代码建立一个仓库 (Repository),即使你只是一个人开发,也可以帮你管理这个项目的代码。这个仓库可以认为相当于 SVN 的中心服务器,里面包含了代码的全部版本。当然,你自己不需要通过网络来和这个仓库来交互。

那么对于团队开发,岂不是每个人都有一个仓库?是的。每位开发者都对这个项目拥有个人的仓库,这些仓库之间的地位是平等的。这些仓库之间可以通过 clone (复制), pull (拉), push (推)等 SVN 没有的操作来进行仓库之间的同步。这让 git 比 svn 高得多的灵活性。当然,如果团队中的成员都自行其事地选择版本管理方法,这个分布式模型是会带来许多麻烦的。所以在团队必须选择一个统一的版本管理策略。

在实践中,一般会建立一个中立的仓库,不在任何成员的机器上,让它来当团队的仲裁者。每个成员的 git 仓库都约定与这个中心仓库进行同步,例如 github.com, bitbucket.com 等网站就是提供托管中心仓库的服务。当然,这些网站目前都提供更多的服务,如网页操作、PR 等。

分布式版本管理系统并不只有 git 一种,还有 Hg 等。但 git 是最为成熟,得到了最多的支持。特别是 github.com 通过社交化等思路更加拓宽了它的使用场景。

从实用上来说,SVN 对比 git 没有优势。个人的安装使用上,两者一样方便。项目组方面,git 更为容易管理。git 的实现极为可靠和高效,大大地鼓励了多分支开发,git 实践中的 git-flow 等高级的团队工作策略更加让 git 具有极高的价值。

当然,git 在理论上比 svn 有更多的操作,需要学习的概念也多很多。但理解这些绝对是值得的。

最后推荐 SourceTree 软件,它比一般 IDE 中的版本管理要漂亮得多,对于新手来说非常直观和容易学习。

如果没有用到multiple site这种需要异地开发和合并类需求的话,svn就足够了。而且相对简单。

现在大部分都在用git吧

以后提问的时候请注意拼写,并且请不要在没有解决问题的情况下采纳问题,给人刷经验的嫌疑。

这种问题过于开放,不容易有针对地回答,即使回答了也不一定能够得到很多帮助。

我觉得git更加偏向于社交,即你想把你的idea让别人也知道,当然,我指的是 https://github.com/
git用起来挺方便的,除了github的访问速度不是很乐观,整体上是不错的。

svn没怎么用过,但是听说有git-svn这种概念(软件),我觉得掌握一个git对我来说足矣。

其他的等高人回答好了。

应该有很多人都纠结过这个,点这里查看吧。

svn是集中式版本控制系统,一个项目只有唯一的一个版本库与之对应,所有项目成员通过网络向该服务器进行提交。具有轻量级拷贝、保存原始拷贝等功能,存在集中式固有的单点故障、网络延迟等问题。
git为Linus开发的分布式版本控制系统,具有独特的设计,性能高,使用习惯和其他的控制系统差异很大。

参考资料:《Git权威指南》蒋鑫

其实我也有这个疑问。我现在一台win7,一台linux,但是如何才可以让他们一起提交代码共享

宣传栏