写在前面: git和svn是目前最常用的团队协作的版本控制系统,这篇博客主要讲二者的优缺点 (区别)
定义
Git: 开源的分布式版本控制系统
下图是git的工作流程
SVN: 远程集中式的版本控制系统
下图是SVN的工作流程
Git优缺点
优点:
- 分布式,每个参与开发的人的电脑上都有一个完整的仓库,不担心中央服务器的问题
- 在没有网络的情况下仍可以进行一系列协作操作,只需在有网络情况下推送到远程仓库即可
- 按元数据方式存储文件,体积小
- 更优雅的分支和合并实现
- 速度快,效率更高
缺点:
- 图形界面支持差,使用难度较大
- 代码保密性差,把整个库克隆下来就可以完全公开所有代码和版本信息
.
SVN优缺点:
优点:
- 较好的权限管理功能,可以精确控制每个目录的权限
- 对中文支持好,操作较为简单方便,易上手
- 所有代码都是以服务端为准,代码一致性高
缺点:
- 中央服务器的单点故障。如果服务器宕机,项目成员将无法合作。最严重的是如果中央数据库在没有保存备份的情况下遭到破坏,除非有项目成员在本地计算机保存了项目的整个历史,否则将丢失所有的东西(包括历史版本、日志等)。
- 速度较慢,效率低
- 对网络依赖性强,不连接服务器基本不能工作(还原、切换分支、推送…),如果推送远程的文件较大且网络状况欠佳,提交文件的速度会受到很大限制
总结
git适合管理版本迭代较快的多人项目
svn适合管理对访问控制、权限分配和代码安全性等要求比较高的项目