版本控制Git
版本控制概念
版本控制是用于一种记录一个或多个文件内容变化,以便将来查阅特定版本修订情况的系统。实现版本控制的系统有三大类:
- (1)本地版本控制系统:一开始的思路都是通过数据库来记录文件的历次更新差异,这样达到版本控制的效果。
- (2)中心化版本控制系统:不同系统上的开发者协同工作,中心化版本控制系统(Centralized Version Control System,CVCS)应运而生。最常见的是CVS,有一个集中管理的服务器,保存所有文件的修订版本,而协同工作的人都通过客户端连接到这台服务器,取出最新的文件或者提交更新。
- (3)分布式版本控制系统:避免单点故障,分布式版本控制系统(Distributed Version Control System,DVCS)面世了。最常见的就是Git,客户端把代码仓库完整镜像下来,任何一处协同工作用的服务器发生故障,还是可通过任何一个镜像的本地仓库进行恢复。
Git的快照流
CVS把保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。Git把数据看作是对小型文件系统的一组快照。Git每次保存项目状态时,主要对当时的全部文件制作一个快照并保存这个快照的索引。
本地执行操作
Git的绝大多数操作都只需要访问本地文件和资源。断网也能继续开发。
只添加数据
Git很难出现那种不可逆操作,几乎只往Git数据库中增加数据,而又不是简单增加数据。
完整性校验
Git中所有数据在存储前都计算校验和,然后以校验和来引用。Git用来计算校验和的算法是SHA-1。Git会将文件的内容和目录结构一通计算出它的哈希,确保文件和路径的完整性。Git数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。
工作区和工作状态
Git有三种状态,你的文件可能处于其中之一:已提交(commited)、已修改(modified)和异暂停(staged)。已提交表示数据已经安全的保存在本地数据库中。已修改表示修改了文件,但还没有保存到数据库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
由此引入Git的三个工作区的概念:Git仓库,工作目录以及暂存区域。
- (1)工作目录:直接编辑修改的目录。
- (2)Git仓库目录:保存项目的元数据和对象数据库的地方。
- (3)暂存区域是一个文件,保存下次将提交的文件列表信息,一般在Git仓库目录中。
分支
Git保存的只是系列文件快照。在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本地提交的作者等相关附属信息,普通提交有一个祖先,有两个或多个分支合并产生的提交则有多个祖先。
Git的分支,其实本质上仅仅是指向commit对象的可变指针。Git会使用master作为分支的默认名字。
网友评论