据我了解,一些VCS存储修订版之间的差异,因为,差异有时很小 - 源代码中的一行被更改或者后续修订中添加了注释.另一方面,Git为每个修订版存储压缩的"快照".
如果只做了很小的改动(大文本文件中的一行),Git如何处理这个?它是否存储了两个几乎完全相同的副本?我想,这将是对空间的低效利用.
我在一个文件中签入了一个简单的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?它们有什么不同,如果有的话?
git ×2