您的位置:首页 > 其它

学习笔记:Git内部原理

2015-05-05 15:46 225 查看
Git的主要结构:

objects目录,存储所有数据内容。

refs目录,存储分支指针

HEAD文件,存储当前分支

index文件,保持暂存区域的信息

一.数据存储

Git是一套内容寻址的文件系统,它的数据是以key-value存储的。存储方式为:为每份内容剩余一份文件,取得内容与头信息的SHA-1校验和,创建以该校验和的前两个字符为名称的目录,以校验和的其余38个字符为名的文件。所以,我的理解是,比较两个文件是否相同,可以通过SHA-1来比较。

Git把对象都存在在objects文件夹里面。有以下四种对象:

blob:普通的文件,如源码等文件。相当于Linux中的inodes或文件内容。

tree:相当于Linux中的目录。一个单独的tree包含一条或多条tree目录,每一条目录含有一个指向blob或子tree对象的SHA-1指针,并附有对象的权限模式、类型和文件信息。

commit:快照信息。

annotated tag:带注释的标签。

二.引用(reference)

Git的一个分支就算一个head记录的引用,HEAD文件是一个指向当前分支的标示符。

现在,包含分支的git图像如下图:



在使用远程仓库的时候,还有一个概念需要了解:Refspec

Refspec的格式是一个可选的+,接着是<src>:<dst>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: