版本控制
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制系统(VCS)作用
1 回溯文件到之前的某个状态
2 回退整个项目到之前的某个时间点
3 比较文件的变化细节
4 恢复项目中修改过的文件到原先的样子
。。。
本地版本控制系统
采用某种简单的数据库来记录文件的历次更新差异。
集中化的版本控制系统(CVCS)
有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
坏处:中央服务器的单点故障:宕机、中心数据库所在的磁盘发生损坏。这些故障会导致无法工作或者丢失所有历史更新记录。
分布式版本控制系统(DVCS)
客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
Git的特点
1 速度
2 简单的设计
3 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
4 完全分布式
5 有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)
Git的思想和工作原理
Git把数据看做是对小型文件系统的一组快照。每次提交更新,或在Git中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。
Git对待数据更像是一个快照流。Git更像是一个小型的文件系统。
Git绝大多数操作都是本地执行
Git保证完整性:Git中所有数据在存储前都计算校验和,然后以校验和来引用。这意味着不可能在Git不知情时更改任何文件内容或目录内容。Git用以计算校验和的机制叫做SHA-1散列。这是一个由40个十六进制字符组成的字符串,基于Git中文件的内容或目录结构计算出来。
Git一般只添加数据:执行Git操作,几乎只往Git数据库中增加数据。一旦提交快照到Git中,就难以在丢失数据。
Git概念
Git有三种状态:已提交(committed)、已修改(modified)、已暂存(staged)
已提交:表示数据已经安全的保存在本地数据库中。
已修改:表示修改了文件,但还没保存到数据库中。
已暂存:表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
如何判断三种状态?
如果Git目录中保存着特定版本的文件,就属于已提交状态。
如果作了修改并已放入暂存区域,就属于已暂存状态。
如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
Git的三个工作区域:Git仓库、工作目录、暂存区域
Git仓库目录:Git用来保存项目元数据和对象数据库的地方。
工作目录:对项目的某个版本独立提取出来的内容。
暂存区域:它是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中。
Git的基本工作流程:
1 在工作目录中修改文件。
2 暂存文件,将文件的快照放入暂存区域。
3 提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录。
参考资料:
https://git-scm.com/book/zh/v2