我在一个文件中签入了一个简单的git仓库.从我的调查; 放置了三种类型的对象.git/objects
举个例子:
$ git cat-file -t 8b4e834eba22e60c284c7b77e43d3c29e619f92f
commit
$ git cat-file -t c7c5b03aea0b8c970c93de3670c28f2108948266
tree
$ git cat-file -t e965047ad7c57865823c7d992b1d046ea66edf78
blob
Run Code Online (Sandbox Code Playgroud)
如果我试图在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
Run Code Online (Sandbox Code Playgroud)
是一个commit对象也tree?它们有什么不同,如果有的话?
Amb*_*ber 11
提交对象是引用树并将其他元数据(作者,提交者,时间戳等)与其关联的对象.
Commit
/ \
/ \
(parent SHA) Tree
(author) / \
(committer) Blob Blob
(timestamps)
(etc)
Run Code Online (Sandbox Code Playgroud)
多个提交对象可以引用同一个树(如果每个提交中的文件状态相同).
例如,如果两个人对文件和提交进行相同的更改,则会产生两个不同的提交对象(因为时间戳和作者都会有所不同).但是,由于最终结果是相同的文件内容,因此两个提交都将指向同一个树.
当您git ls-tree在提交SHA上运行时,它会自动使用该提交引用的树SHA.
| 归档时间: |
|
| 查看次数: |
1241 次 |
| 最近记录: |