区别
集中式(SVN) | 分布式(Git) | |
是否有中央服务器 | 有。开发人员需要从中央服务器获得最新版本的项目然后在本地开发,开发完推送给中央服务器。因此脱离服务器开发者几乎无法工作 | 没有。开发人员本地有 Local Repository |
网络依赖 | 必须要联网才能工作,而且对网络的依赖性较强。如果推送的文件比较大而且网络状况欠佳,则提交文件的速度会受到很大的限制 | 分布式在没有网络的情况下也可以执行 commit、查看版本提交记录、以及分支操作,在有网络的情况下执行 push 推送到 Remote Repository |
文件存储格式 | 按照原始文件存储,体积较大 | 按照元数据方式存储,体积很小 |
是否有版本号 | 有 | 没有 |
分支操作的影响 | 创建新的分支则所有人都会拥有和你一样的分支 | 分支操作不会影响其他开发人员 |
提交 | 提交的文件会直接记录到中央版本库 | 提交是本地操作,需要执行 push 操作才会到主要版本库 |
工作流对比
SVN
- 本地写代码
- 从服务器拉回服务器的当前版本库,并解决冲突
- 将本地代码提交到服务器
Git
- 本地写代码
- 提交到本地版本库
- 从服务器拉回服务器的当前版本库,并解决冲突
- 将远程与本地代码合并结果提交到本地版本库
- 将本地版本库推送到服务器
SVN 的优势
- 优异的跨平台支持,对 windows 平台支持非常友好
- 简单易用,安装后稍微培训就知道如何操作
- 代码、需求、文档、设计稿等都可以用 svn 进行管理,适合不同部门非技术的同事写作
Git 的优势
- 去中心化:git 没有中心服务器,每个机器上都是一台完整的库。
- 本地提交(好处):
- 断网提交
- 小步提交:可以对自己的阶段成果有所跟踪,并且提高每次变更的安全性
- 本地库:和断网提交同一个实现,但从需求角度出发则略有不同
- 本地回滚
- 分支策略