Git在存储数据的时候,存储的都是完整的对象,并不是差异,叫做松散对象Loose Object,有时候你只改变了一点,但是同时会拥有近乎两倍大小的blob对象。
这样子做岂不是很不节省磁盘?所以Git会在每次push到远程的时候进行garbage collect操作,当然我们也可以自己手动改进行gc,如:
git gc
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), done.
Total 6 (delta 0), reused 0 (delta 0)
然后查看一下.git/objects下有哪些文件:
find .git/objects -type f
发现多了一些pack文件:
.git/objects/info/packs
.git/objects/pack/pack-abcde.idx
.git/objects/pack/pack-abcde.pack