一、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对象: