我在一个简单的Git仓库中上传了一个文件。
根据我的调查,.git/objects
目录下有三种类型的对象:
- commit(提交)
- tree(树)
- blob(文件)
以下是一个示例:
$ git cat-file -t 8b4e834eba22e60c284c7b77e43d3c29e619f92f
commit
$ git cat-file -t c7c5b03aea0b8c970c93de3670c28f2108948266
tree
$ git cat-file -t e965047ad7c57865823c7d992b1d046ea66edf78
blob
如果我试图在blob上运行git-ls-tree,则会引发错误。
但同样可以在commit
或tree
对象上运行它。
$ git ls-tree -t c7c5b03aea0b8c970c93de3670c28f2108948266
100644 blob e965047ad7c57865823c7d992b1d046ea66edf78 readme.txt
$ git ls-tree -t 8b4e834eba22e60c284c7b77e43d3c29e619f92f
100644 blob e965047ad7c57865823c7d992b1d046ea66edf78 readme.txt
一个
commit
对象也是一个tree
吗?它们之间有什么区别吗?