Git和传统版本控制系统的区别:
传统版本控制系统:
1、将数据保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异
2、只记录发生改变的数据
3、每次克隆只获取最新的内容
Git:
1、将数据做成一组快照,每次提交更新,或在Git中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引
2、如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件
3、在Git中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息
4、Git中所有数据在存储前都计算校验和,若你在传送过程中丢失信息或损坏文件,Git 就能发现
5、Git用以计算校验和的机制叫做 SHA-1散列(哈希),它由40个十六进制字符组成字符串,基于Git中文件的内容或目录结构计算出来
6、Git数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名
7、Git一般只添加数据
8、客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,每一次的克隆操作,实际上都是一次对代码仓库的完整备份
Git的三种状态:
已提交(committed):表示数据已经安全的保存在本地数据库中
已修改(modified):表示修改了文件,但还没保存到数据库中
已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
如果Git目录中保存着的特定版本文件,就属于已提交状态
如果作了修改并已放入暂存区域,就属于已暂存状态
如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态
Git项目的三个工作区:
Git仓库:是Git用来保存项目的元数据和对象数据库的地方,是Git中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据
工作目录:是对项目的某个版本独立提取出来的内容,这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改
暂存区域:是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中,有时候也被称作索引
Git的基本工作流程:
1、在工作目录中修改文件
2、暂存文件,将文件的快照放入暂存区域
3、提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录