简析git中的pack文件之作用

本篇文章为大家简析一下git中的pack文件之作用。在git中,pack文件可以有效的使用磁盘缓存,并且为常用命令读取最近引用的对象提供访问模式;git会将多个指定的对象打包成一个成为包文件(packfile)的二进制文件,用于节省空间和提高效率。


简析git中的pack文件之作用


本文适用于Windows10系统、Git2.30.0版、Dell G3电脑。


简析git中的pack文件之作用


在git中,pack文件经过精心构造,可以有效地使用磁盘缓存,并为常用命令和读取最近引用的对象提供“不错”的访问模式。


Git的包文件格式相当灵活(见文档/技术/包,format.txt,或将打包文件在Git的社区图书)。


打包文件以两种主要方式存储对象:


●  “未删除”(获取原始对象数据并进行压缩压缩)。


●  “删除”(针对某个其他对象形成增量,然后对生成的增量数据进行压缩压缩)。


数据包中存储的对象可以按任何顺序排列(不必(不必)按对象类型,对象名称或任何其他属性排序),并且可以针对相同类型的其他任何合适的对象制作已删除的对象。


Git的pack-objects命令使用了几种启发式方法,可以为常见命令提供出色的参考位置。


这些启发式方法既控制了已删除对象的基础对象的选择,又控制了对象的顺序。


每种机制大部分都是独立的,但是它们有一些共同的目标。


Git确实形成了增量压缩对象的长链,但是试探法试图确保只有“旧”对象在长链的末端。


core.deltaBaseCacheLimit自动使用增量基本缓存(其大小由配置变量控制 ),并且可以大大减少需要读取大量对象(例如git log-p)的命令所需的“重建”次数。


增量压缩启发式典型的Git存储库存储大量对象,因此无法合理地比较所有对象以找到将产生最小增量表示形式的对(和链)。增量基数选择启发式算法是基于这样的思想,即可以在文件名和大小相似的对象中找到良好的增量基数。


每种类型的对象都是单独处理的(即,一种类型的对象永远不会用作另一种类型的对象的增量基础)。


出于增量基数选择的目的,对象(主要)按文件名和大小排序。进入此排序列表的窗口用于限制被视为潜在增量基础的对象数量。


扩展知识


问题:


.git/objects/pack 文件过大


可能是由于开发过程中上传过大文件,虽然现已删除,但仍然保存着git记录中。


解决办法如下:


一、删除仓库上的项目,重新提交代码


二、彻底清除历史记录


1.识别出最大的三个文件

git verify-pack -v .git/objects/pack/pack-8eaeb...9e.idx | sort -k 3 -n | tail -3
296169a146c50dbc100a5d0ee5be87a45cd7cbb3 blob   50296832 49474116 291684796
  
aae2c1bf6109f2729502349722b4c3402626d755 blob   77762481 77330392 78759794
  
35047899fd3b0dd637b0da2086e7a70fe27b1ccb blob   100534272 100014418 191670176


2.查询大文件的文件名

git rev-list --objects --all | grep 35047899fd3b0dd637b0da2086e7a70fe27b1ccb
35047899fd3b0dd637b0da2086e7a70fe27b1ccb /wabapi/bulid/master-0.0.1.jar


3.将该文件从历史记录的所有 tree 中移除

git filter-branch --index-filter 'git rm --cached --ignore-unmatch  /wabapi/bulid/master-0.0.1.jar'


4.执行如下语句

rm -rf .git/refs/original/
  
git reflog expire --expire=now --all
  
git fsck --full --unreachable
  
git repack -A -d
  
git gc --aggressive --prune=now
  
git push --force


以上就是关于git中的pack文件之作用简析,翼速应用平台内有更多相关资讯,欢迎查阅!

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题