深入理解Git (六) - 松散对象

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

当然也还有可能还有一些dangling的对象,这些对象是没有被其它引用的对象,git不会对其进行pack。.pack文件存储了所有删除的对象, .idx文件是索引文件,存储相应的偏移信息。


我们可以使用verify-pack命令显示pack的信息:

git verify-pack -v .git/objects/pack/pack-abcde.idx

a35a7ea3f7b55be91743c708d150b573116515ec commit 239 160 12
fb1c75a143de21f30004dab829b39f99d225d292 commit 187 128 172
ca2b7d42454d33b31cfc810592e8bd47f811decd tree   70 76 300
fd5d73ef7deb282cbf47826c58448597f24453ba blob   18 28 376
56166dc42a6a2f694e088694a2a2c90606e28f2d blob   16 23 404
4e1ba2916b4b903d2e5a2209cdcca7129a891c2f tree   36 46 427
non delta: 6 objects
objects/pack/pack-83c7f603b25c063accec33ee8869a6afb1e9fd0a.pack: ok


第一列显示对象的指针,即Hash值,第二列展示是什么类型的对象,第三列展示占用了多少字节。


原文:http://blog.csdn.net/hongchangfirst/article/details/45339229

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值