git学习笔记(1-集中式与分布式版本控制工具对比)

版本控制工具目前有集中式版本控制工具(SVN)和分布式版本控制工具(Git)。

一,集中式版本控制工具

有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
git学习笔记(1-集中式与分布式版本控制工具对比)
但是通常情况下,使用者下载的是存放内容的最新版本,一旦服务器故障或者损坏,则因为用户端只有最新版本,难以恢复全部版本文件,有丢失记录的风险。

二,分布式版本控制工具

客户端不仅仅是提取最新的文件,而是把代码仓库完整地镜像出来。每一次提取操作,实际上是对代码仓库的完整备份,这样一来,就算服务器故障,每一台客户端内部都存着完整的代码库,可以还原。
git学习笔记(1-集中式与分布式版本控制工具对比)
分布式的版本控制系统在管理项目时 存放的不是项目版本与版本之间的差异. 它存的是索引( 所需磁盘空间很少 所以每个客户端都可以放下整个项目的历史记录)
分布式的版本控制系统出现之后, 解决了集中式版本控制系统的缺陷:

  1. 断网的情况下也可以进行开发( 因为版本控制是在本地进行的)
  2. 使用 github 进行团队协作, 哪怕 github 挂了 每个客户端保存
    的也 都是整个完整的项目。
  3. SVN存的不是每一个完整的版本,而是存储新版本与旧版本的差异。需要的空间小一些,但是回溯的速度慢。而git每次存储的是整个项目的完整版本,需要更大的硬盘空间,但是git团队对代码做了极致的压缩,最终需要的实际空间比SVN 多不了多少,但是它的回溯速度快得多,无需像SVN那样打补丁。