git有别与传统的版本管理软件,文件存储的过程中不存放版本与版本间的差异信息,每次版本提交,会针对文件和目录利用SHA-1算法计算数据的校验和,如果存在变化则将文件或目录以快照的方式存入系统,版本指针指向新存入快照,如果没有变化,版本指针则指向前一版本指针所指向快照,系统内部存储就如同一个链条,通过指针将所有信息的快照串接起来.
git的特点
- 所有信息均以本地文件的方式存储,不用联网即可完成所有操作.
- 每个项目可以同时拥有多个远程仓库,项目管理者可以选择从任意仓库获取信息,同时可以选择将本地仓库中的信息推送至一个或多个远程仓库.
- 根据项目的需求可以同时开发多个特性,特性以分支的形式存在,每个分支在系统中相当于一个指针,master是项目的默认指针,当特性开发测试完成后,可以将数据合并入master分支实现正式发布.
- 项目的数据存式放分为仓库和工作目录,仓库数据存放于.git目录,而工作目录中的信息是动态的,可以随时切换至仓库中任意快照时的状态,即可以瞬间切换至针对不同特性开发的不同版本状态.