git使用记录五:commit, tree, blob三个对象之间的关系
git使用记录五: commit, tree ,blob三个对象之间的关系
查询一下最后的两次 log
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git log -n 2
commit 32f575d33a6bcf8b834590718594e472e0ff9b4b (HEAD -> master)
Author: soaoen <soaeon@163.com>
Date: Tue May 21 21:01:41 2019 +0800
add index.html
commit 980e3beda020a9696626c671badc4f1612f0a1aa
Author: soaoen <soaeon@163.com>
Date: Tue May 21 21:01:04 2019 +0800
rename readme
那我们去看看 ‘32f575d33a6bcf8b834590718594e472e0ff9b4b’ 是个什么类型的?
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git cat-file -t 32f575d33a6bcf8b834590718594e472e0ff9b4b
commit
commit对象呀, 其实查询log的时候 已经显示出来了哟, 去看看这个commit 里面有什么东西呗
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git cat-file -p 32f575d33a6bcf8b834590718594e472e0ff9b4b
tree b45764296505a9fa97245d0b0107b2a3b5f46447
parent 980e3beda020a9696626c671badc4f1612f0a1aa
author soaoen <soaeon@163.com> 1558443701 +0800
committer soaoen <soaeon@163.com> 1558443701 +0800
add index.html
里面记录了tree 对应的hash值, 走起,我们去看看tree 中的内容
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git cat-file -t b45764296505a9fa97245d0b0107b2a3b5f46447
tree
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git cat-file -p b45764296505a9fa97245d0b0107b2a3b5f46447
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 index.html
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 readme.md
原来我们commit的两个文件(index.html和readme.md文件) 在本次commit 中生成了blob对象保存在commit 中,那么blob对象中内容涉及到修复的数据了。
- 所以一个commit 包含 tree对象,author, commiter, log-info,
- tree对象中又包含许多blob 对象