git packfile

参考文档

https://git-scm.com/book/en/v2/Git-Internals-Packfiles

概要

默认情况下,blob文件存储在.git/objects/CommitID[0:2]/CommitID[2:]下,但是当运行git gc,git push推送到远程分支时,或其他情况下,git会自动将文件打包。

在概念上,blob文件称为loose的,packfile则将多个类似的文件聚集在一起,只存储delta来优化空间占用。

git verify-pack -v .git/objects/pack/pack-978e03944f5c581011e6998cd0e9e30000905586.idx
2431da676938450a4d72e260db3bf7b0f587bbc1 commit 223 155 12
3c4e9cd789d88d8d89c1073707c3585e41b0e614 tree   8 19 1331 1 deef2e1b793907545e50a2ea2ddb5ba6c58c4506
b042a60ef7dff760008df33cee372b945b6e884e blob   22054 5799 1463
033b4468fa6b2a9547a70d88d1bbe8bf3f9ed0d5 blob   9 20 7262 1 b042a60ef7dff760008df33cee372b945b6e884e
1f7a7a472abf3dd9643fd615f6da379c4acb3e3a blob   10 19 7282
non delta: 15 objects
chain length = 1: 3 objects
.git/objects/pack/pack-978e03944f5c581011e6998cd0e9e30000905586.pack: ok

上面的例子显示, 033b引用b042a文件。越早的版本越以delta的形式存储,最新的版本则是完整的文件,因为最可能被访问的文件是最近的版本。

相关命令

   index-pack           Build pack index file for an existing packed archive
   multi-pack-index     Write and verify multi-pack-indexes
   pack-objects         Create a packed archive of objects
   prune-packed         Remove extra objects that are already in pack files
   unpack-objects       Unpack objects from a packed archive
   
   pack-redundant       Find redundant pack files
   show-index           Show packed archive index
   unpack-file          Creates a temporary file with a blob's contents
   verify-pack          Validate packed Git archive files
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值