站長資訊網
        最全最豐富的資訊網站

        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教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 最新精品露脸国产在线 | 欧美激情视频精品一区二区| 久久亚洲精品国产精品| 久久99国产精品99久久| 亚洲国产精品一区二区成人片国内 | 国产精品视频一区二区三区四 | 欧美精品丝袜久久久中文字幕| 精品免费久久久久久久| 亚洲精品成人a在线观看| 国产精品青草久久久久福利99| 99精品视频在线观看免费| 久久免费的精品国产V∧| 亚洲欧洲精品成人久久奇米网| 国产精品成人h片在线| 国产美女精品一区二区三区| 中文字幕精品无码久久久久久3D日动漫 | 亚洲精品制服丝袜四区| 欧美成人精品欧美一级乱黄一区二区精品在线| 久久er热视频在这里精品| 久久99精品久久久久久久久久| 亚洲欧美日韩国产一区二区三区精品| 国产精品美女久久久久av爽 | 国内精品久久久久久久coent| 亚洲国产精品不卡在线电影| 2021国产精品视频| 国精品午夜福利视频不卡麻豆| 午夜精品射精入后重之免费观看| 亚洲国产综合精品中文字幕| 欧美精品福利在线视频 | 国产精品 羞羞答答在线| 免费视频成人国产精品网站| 亚洲欧美一级久久精品 | 久久精品国产91久久综合麻豆自制 | 老司机亚洲精品影院无码| 在线精品国产一区二区| 久久精品国产精品青草| 老司机69精品成免费视频| 久久国产精品99久久久久久老狼 | 亚洲国产精品成人精品无码区| 亚洲精品乱码久久久久久中文字幕| 亚洲AV永久无码精品一区二区国产|