版本管理工具git------版本管理工具的发展历史
涉及到的内容:
- 版本控制的发展历史。
- 每个历史阶段版本控制系统的优缺点。
一、版本管理工具发展历史如下图所示:
- Github为开源项目免费提供Git存储。
- 集中式:需要一个中心服务器来存放文件,不连网不能提交、不能查看。
- 分布式:每个拥有版本库的人,在不连网也能进行提交和查看,在效率上比集中式高很多。
1、原始的版本控制
将整个项目复制到某个磁盘上,在项目的名称上标识它每次修改的版本,例如:
每次修改都需要进行都需要重新标识一个版本,并将其保存,如上图所示。
2、本地版本控制系统(最流行:RCS)
用本地数据库来记录每次文件的更新,如下图所示:
3、集中化的版本控制系统(CVS、SVN)
主要目的:可以让在不同系统上的开发者协同合作。
主要思想:需要一台中心服务器,来存储文件的更新版本。
缺点:
(1)如果中心服务器发生损坏,保存在上边的数据就会丢失(更新记录也将消失,只剩下在人们在各自机器上保留的文件快照)。
(2)需要有网络将修改的文件提交到中心服务器。
总结:只要数据保存在单一位置就有发生丢失数据所有历史记录的风险。
4、分布式版本控制系统(Git)
(1)不仅仅提取最新版本的文件快照,而是把代码仓库完整的镜像克隆到本地磁盘。
(2)每一次的克隆就相当于对代码仓库的完整备份。
5、集中式和分布式的区别(自己的理解)
集中是本地并没有代码仓库的完整镜像,而分布式保存了代码仓库的完整镜像也就是记录了文件修改的历史。
二、git特性
1、直接记录快照,而非差异性比较
大部分系统将保存的信息看作一组基本文件和每个文件随时间逐步积累的差异。
git没有重新存储未修改的文件,而是保留一个连接指向之前的文件。
2、几乎所有操作都是在本地执行
在git中大多数情况下访问的是本地的文件和资源,一般不需要网上的其他信息。
3、git保证完整性(存在疑问)
git中所有数据在存储前都计算校验和,然后以校验和来引用。在传送文件过程中,若文件信息有丢失git就能发现(不可能在git不知情的情况下修改文件内容)。
4、git一般只添加数据
三、git的三种状态
- 已修改(modified):表示已经修改了文件,但是还没有保存到数据库中。
- 已暂存(staged):表示对一个以修改文件的当前版本做了标记,使之包含在下次提交的快照中。
- 已提交(committed):表示数据已经安全的保存在本地数据库中。
有以上git的三种状态引入git项目的三个工作区域的概念:git仓库、工作目录和暂存区域。
- git仓库目录是git用来保存项目的元数据和对象数据库的地方,从其他计算机克隆仓库时,拷贝的就是这里的数据。
- 工作目录是对项目的某个版本独立提取出来的内容,放在磁盘上供使用和修改。
- 暂存区是一个文件,保存了下次将提交的文件列表信息,一般在git仓库目录中。
基本的git工作流程如下:
1. 在工作目录中修改文件。
2. 暂存文件,将文件的快照放入暂存区域。
3. 提交更新,找到暂存区域的文件,将快照永久性存储到git仓库目录。