欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          git的pack文件有什么用

          在git中,pack文件可以有效的使用磁盤緩存,并且為常用命令讀取最近引用的對(duì)象提供訪問模式;git會(huì)將多個(gè)指定的對(duì)象打包成一個(gè)成為包文件(packfile)的二進(jìn)制文件,用于節(jié)省空間和提高效率。

          git的pack文件有什么用

          本文操作環(huán)境:Windows10系統(tǒng)、Git2.30.0版、Dell G3電腦。

          git的pack文件有什么用

          Git的pack文件經(jīng)過精心構(gòu)造,可以有效地使用磁盤緩存,并為常用命令和讀取最近引用的對(duì)象提供“不錯(cuò)”的訪問模式。

          Git的包文件格式相當(dāng)靈活(見文檔/技術(shù)/包,format.txt,或?qū)⒋虬募贕it的社區(qū)圖書)。

          打包文件以兩種主要方式存儲(chǔ)對(duì)象:“未刪除”(獲取原始對(duì)象數(shù)據(jù)并進(jìn)行壓縮壓縮)或“刪除”(針對(duì)某個(gè)其他對(duì)象形成增量,然后對(duì)生成的增量數(shù)據(jù)進(jìn)行壓縮壓縮)。

          數(shù)據(jù)包中存儲(chǔ)的對(duì)象可以按任何順序排列(不必(不必)按對(duì)象類型,對(duì)象名稱或任何其他屬性排序),并且可以針對(duì)相同類型的其他任何合適的對(duì)象制作已刪除的對(duì)象。

          Git的pack-objects命令使用了幾種啟發(fā)式方法,可以為常見命令提供出色的參考位置。

          這些啟發(fā)式方法既控制了已刪除對(duì)象的基礎(chǔ)對(duì)象的選擇,又控制了對(duì)象的順序。

          每種機(jī)制大部分都是獨(dú)立的,但是它們有一些共同的目標(biāo)。

          Git確實(shí)形成了增量壓縮對(duì)象的長(zhǎng)鏈,但是試探法試圖確保只有“舊”對(duì)象在長(zhǎng)鏈的末端。

          core.deltaBaseCacheLimit自動(dòng)使用增量基本緩存(其大小由配置變量控制 ),并且可以大大減少需要讀取大量對(duì)象(例如git log-p)的命令所需的“重建”次數(shù)。

          增量壓縮啟發(fā)式典型的Git存儲(chǔ)庫存儲(chǔ)大量對(duì)象,因此無法合理地比較所有對(duì)象以找到將產(chǎn)生最小增量表示形式的對(duì)(和鏈)。增量基數(shù)選擇啟發(fā)式算法是基于這樣的思想,即可以在文件名和大小相似的對(duì)象中找到良好的增量基數(shù)。

          每種類型的對(duì)象都是單獨(dú)處理的(即,一種類型的對(duì)象永遠(yuǎn)不會(huì)用作另一種類型的對(duì)象的增量基礎(chǔ))。

          出于增量基數(shù)選擇的目的,對(duì)象(主要)按文件名和大小排序。進(jìn)入此排序列表的窗口用于限制被視為潛在增量基礎(chǔ)的對(duì)象數(shù)量。

          擴(kuò)展知識(shí):

          .git/objects/pack 文件過大

          可能是由于開發(fā)過程中上傳過大文件,雖然現(xiàn)已刪除,但仍然保存著git記錄中。

          解決辦法:

          一、刪除倉庫上的項(xiàng)目,重新提交代碼。

          二、徹底清除歷史記錄

          1.識(shí)別出最大的三個(gè)文件

          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.執(zhí)行如下語句

          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

          推薦學(xué)習(xí):《Git教程》

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)