本控制(VCS是一种记录一个或者若干文件内容变化,以便将来查阅特定版本修订情况的系统。
RCS(Revision Control System):工作原理基本上就是保持并管理文件补丁(patch),文件补丁是一种特点格式的文件,记录着对应文件修订前后的内容变化,所以根据每次修订后的补丁,rcs可以通过不断打补丁,就计算各个版本的文件内容。
集中化的版本控制系统(Centralized Version Control Systems,CVCS):都有一个单一的集中管理的服务器,保持所有文件的修订版本,而协同工作的人们通过客户端链接到服务器,取出最新的文件或提交更新。
分布式版本控制系统(Distributed Version Control System,DVCS):客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像clone下来,这么以来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复,因为每一次的提取操作,实际上都是一次对代码仓库的完整备份
git:直接记录快照,而非差异比较(保存每次更新时的文件快照)。
git绝大多数的操作都只需要访问本地文件和资源,不用连网,因为git在本地磁盘上就保存着所有当前项目的历史更新没所以处理起来速度飞快。
git在保存到remote之前,所有数据都要进行内容的校验和计算,并将此结果作为数据的唯一标识和索引(使用sha-1算法计算数据的校验和,通过对文件的内容或目录的结构计算,结果作为指纹字符串。实际上,所有保持在Git数据库中的东西都是用此哈希值来做索引)。
文件的三种状态:
已提交(committed):表示该文件已经被安全地保持在本地数据库中
已修改(modified):表示修改了某个文件,但是还没有提交保持
已暂存(staged):表示把已修改的文件放在下次提交时要保存的清单中。
文件转流的三个工作区:
git的工作目录(working directory)、暂存区域(staging area)以及本地仓库(git directory epository)
所谓的暂存区域只不过是个简单的文件,一般放在Git目录中,有时候称为索引文件。
基本工作流程:
在工作目录中修改某些文件。
对修改后的文件进行快照,然后保存在暂存区域。
提交更新,将保存在暂存区域的文件快照永久转储到Git目录中。