git对象

来源:互联网 发布:数据库的类型 编辑:程序博客网 时间:2024/05/23 18:54

一、SHA1哈希值
查看日志详细输出:
这里写图片描述
上图中包含三个哈希值(40位十六进制数字)表示的对象ID:
commit :这是本次提交的唯一标识
tree :本次提交所对应的目录树
parent :本地提交的父提交(上一次提交)

查看这三个引用对象ID的类型,ID值可以不用写全,只要前几位不冲突就行:
这里写图片描述

查看对象的内容(第一个是树对象,第二个是commit对象):
这里写图片描述

上面的目录树对象中存在一种新类型的对象:blob。这个对象保存着we.txt 和welcome.txt的内容:
这里写图片描述

这些对象都是保存在Git库中的objects目录下。
这里写图片描述
上图中,最左上角的commit对象,是本次提交的唯一标识。它的parent指向上一次提交;它的tree指向本次提交对应的目录;

HEAD和master
这里写图片描述
上面三个命令的结果都是一样的,具有相同的指向:
查看之间的关系:
这里写图片描述
上图说明:HEAD指向一个引用:refs/heads/master。
查看该引用:
这里写图片描述
原来分支master指向的是一个提交ID(本次最新提交)。

一个接近真实的版本库结构图:
这里写图片描述
目录 .git/refs 是保存引用的命名空间;其中 .git/refs/heads目录下的引用又称为分支,比如 refs/heads/master分支,也可直接去掉前面两级目录直接用master表示。
所以,HEAD、master 和 refs/heads/master 都指向同一个commit对象:
这里写图片描述

使用HEAD代表版本库中最近的一次提交;
HEAD^代表版本库的上一次提交,即最近一次提交的父提交;
HEAD^^则代表HEAD^的父提交;
HEAD^1 相当于HEAD^;
HEAD^2 相当于HEAD^^;
也可以使用ID值,例如:519a55~5 即相当于 519a55^^^^^;
也可以找出提交所对应的具体对象,例如:c160b214^{tree} ,那么只会返回该tree对象:
这里写图片描述

0 0
原创粉丝点击