Git中主要对象有: commit, tree, blob。本文将分析这三个对象间的关系。、
1.实例
首先,浏览一下提交记录。
$ git log
commit 51491e8b67207fea4984eac4f539e4d118be0e95
Author: April <***@163.com>
Date: Sat Apr 13 10:39:28 2019 +0800
add index and image
commit 9cb7cf51f5264f8b96827b95d470c22469995d58
Author: April <***@163.com>
Date: Sat Apr 13 10:02:22 2019 +0800
add readme.txt
执行结果表明:项目有两次提交,分别为“51491e”,“9cb7cf5”。
其次,查看commit “51491e”。
$ git cat-file -p 51491e
tree 3ad90f1713eac631f623473b59889ef820dc891f
parent 9cb7cf51f5264f8b96827b95d470c22469995d58
author April <***@163.com> 1555123168 +0800
committer April <***@163.com> 1555123168 +0800
执行结果表明:该提交指向tree "3ad90f17", 上一次提交为commit “9cb7cf5”,开发人为April,提交人为April。
然后,查看 tree "3ad90f17"。
$ git cat-file -p 3ad90f17
040000 tree e03c041f6c389a5ce5ff0161eba7a8ca31d23457 images
100644 blob d95f3ad14dee633a758d2e331151e950dd13e4ed index.html
100644 blob 14c0554362cd04881158d0900f6a73055f36c396 readme.txt
执行结果表明:该提交包含文件夹images,文件index.html 和文件 readme.txt。
最后,查看 tree "e03c04"。
$ git cat-file -p e03c041f
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 face.txt
执行结果表明:文件夹images中包含文件face.txt。
2.总结
根据以上实例,可以总结出Git对象commit、tree和 blob的关系 如下: