版本控制系统
- 本地版本控制系统
-
工具:RCS(MAC OS X 操作系统中只要安装开发者工具就会包含rcs命令,RCS会在磁盘上以一种特殊的格式保补丁(patch set 也就是文件之间的差异),通过叠加补丁来讲文件恢复到某个历史状态)】
-
缺点:
-
优点:操作简单
-
- 集中式版本控制系统(Centralized Version Control System CVCS)
-
工具:Subversion、CVS、Perforce
-
特点:在对待数据的方式上。以文件变化列表的方式存储信息
-
缺点:单点故障。①服务器宕机,期间不能协作和提交更改。②中央数据库所在的硬盘受损,也没有备份的情况下,历史记录丢失。
-
优点
-
图示
-
-
- 分布式版本控制系统(Distributed Version Control System DVCS)
- 工具: Git、Mercruial,Bazaar
- 特点:
- ①客户端除了检出文件还检出了代码仓库的完整镜像(提交版本记录到本地),服务器一旦出现故障,可以用自己本地镜像来恢复服务器,每次检出操作都是对数据的一次完整备份。
- ②将数据视为一个微型文件系统的一组快照,每次提交或者在git保存项目的状态时,git抓取一张所有文件当前状态的快照,然后存储一个指向该快照的引用。如果文件没有发生变动,git不会重新保存文件,只是留下一个指向先前已经保存过的相同文件的链接。,git将数据视作一个快照流。
- ③更像一个微型文件系统。
- ④git大部分操作需要用到本地文件和资源,无需从网络中服务器中获取信息(项目完整历史记录都存放在本地磁盘上,不需要从服务器中获取历史信息,只需要从本地数据库张读取就行,与历史版本比较差异时,都是本地进行差异计算,好处是可以在高铁上干活,有网络之后再上传就行了。),集中式版本系统多数操作都有网络延时开销。
- 优点:处理大型项目效率极高,惊叹的非线性开发分支系统。
- 图示
- git简史 :git 前身 BitKeeper(通过传递补丁和归档文件实现)。
git和其他版本控制系统最大的不同是对待和储存信息的方式。
Git的完整性
- git在所有的数据存储前都会执行校验和计算,随后以校验和的形式来引用对应的数据,这意味着不可能在git不知情的情况下更改文件或者目录的内容,这项功能根植于git最底层。git能监测出传输过程中丢失的信息或者受损的文件。
- git所采用的校验和机制叫作SHA-1散列,这是一个由40个16进制字符(0-9、 a-f)所组成的字符串,根据文件内容和git的目录结果计算所得到的。
git的三种状态
- 已提交
- 定义:已经安全的存入本地的数据库中,表现为一个文件的特定版本出现在git目录中。
- 已修改
- 定义:已经改动了文件,但尚未提交到数据库中即已经发生了变动,但是没有暂存。
- 已暂存
- 定义:已修改文件的当前版本做出了标识并将其加入下一次要提交的快照中。
git项目的主要区域
- Git目录
- 定义:保存项目元数据和对象数据库的地方,是Git最重要的部分,也是从其他计算机中克隆仓库时要复制的内容。
- 工作目录
- 定义:对项目某个版本的单次检出。这些文件是从Git目录下的压缩数据库内被提取出,放置在磁盘上以供使用或者修改。
- 暂存区
- 定义:暂存区是一个文件,一般位于Git目录中,保存了下次所要提交内容的相关信息,有时候也被称为“索引”。
Git基本工作流如下
- 修改工作目录中的文件
- 暂存文件,将这些文件的快照加入暂存区。
- 提交暂存区中的文件,将快照永久的保存在Git目录中。