Rumah > Artikel > alat pembangunan > Apakah kegunaan fail git pack?
Dalam git, fail pek boleh menggunakan cache cakera dengan berkesan dan menyediakan mod akses untuk arahan biasa untuk membaca objek yang dirujuk baru-baru ini git akan membungkus berbilang objek yang ditentukan ke dalam fail perduaan pakej (fail paket) untuk menjimatkan ruang dan meningkatkan kecekapan.
Persekitaran pengendalian artikel ini: sistem Windows 10, Git versi 2.30.0, komputer Dell G3.
Fail pek Git dibina dengan teliti untuk menggunakan cache cakera dengan cekap dan menyediakan model akses "Bagus".
Format fail pakej Git agak fleksibel (lihat Documentation/Technology/Package-format.txt, atau letakkan fail pakej dalam buku komuniti Git).
Fail yang dibungkus menyimpan objek dalam dua cara utama: "Nyahpadam" (dapatkan data objek asal dan mampatkannya) atau "Padam" (deltakannya terhadap beberapa objek lain dan kemudian delta pemampatan data yang terhasil).
Objek yang disimpan dalam paket boleh disusun dalam sebarang susunan (tidak semestinya (semestinya) mengikut jenis objek, nama objek, atau mana-mana atribut lain), dan objek yang dipadam boleh dibuat terhadap mana-mana objek lain yang sesuai bagi objek jenis yang sama.
Arahan pack-objects Git menggunakan beberapa heuristik yang menyediakan lokasi rujukan yang sangat baik untuk arahan biasa.
Heuristik ini mengawal kedua-dua pemilihan objek asas untuk objek yang dipadam dan susunan objek.
Setiap mekanik kebanyakannya bebas, tetapi mereka berkongsi beberapa matlamat yang sama.
Git memang membentuk rantaian panjang objek termampat delta, tetapi heuristik cuba memastikan bahawa hanya objek "lama" berada di hujung rantai panjang.
core.deltaBaseCacheLimit secara automatik menggunakan cache pangkalan delta (saiznya dikawal oleh pembolehubah konfigurasi) dan boleh mengurangkan bilangan "pembinaan semula" yang diperlukan oleh arahan yang perlu membaca sejumlah besar objek (seperti sebagai git log -p).
Repositori Git biasa heuristik mampatan delta menyimpan sejumlah besar objek, jadi adalah mustahil untuk membandingkan semua objek secara munasabah untuk mencari pasangan (dan rantai) yang akan menghasilkan perwakilan delta terkecil. Heuristik pemilihan asas delta adalah berdasarkan idea bahawa pangkalan delta yang baik boleh ditemui di antara objek dengan nama dan saiz fail yang serupa.
Setiap jenis objek dikendalikan secara berasingan (iaitu, objek daripada satu jenis tidak pernah digunakan sebagai asas tambahan untuk objek jenis lain).
Untuk tujuan pemilihan radix tambahan, objek diisih (terutamanya) mengikut nama fail dan saiz. Tetingkap ke dalam senarai diisih ini digunakan untuk mengehadkan bilangan objek yang dianggap sebagai pangkalan tambahan yang berpotensi.
Pengetahuan lanjutan:
fail .git/objects/pack terlalu besar
Ia mungkin disebabkan oleh memuat naik fail yang terlalu besar semasa proses pembangunan , walaupun ia telah Dipadamkan, tetapi masih disimpan dalam rekod git.
Penyelesaian:
1. Padamkan projek dalam gudang dan serahkan semula kod.
2. Kosongkan sejarah
1 Kenal pasti tiga fail terbesar
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
3. Alih keluar fail daripada semua pokok dalam sejarahgit rev-list --objects --all | grep 35047899fd3b0dd637b0da2086e7a70fe27b1ccb 35047899fd3b0dd637b0da2086e7a70fe27b1ccb /wabapi/bulid/master-0.0.1.jar4 Jalankan pernyataan berikut
git filter-branch --index-filter 'git rm --cached --ignore-unmatch /wabapi/bulid/master-0.0.1.jar'Pembelajaran yang disyorkan: "
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 --forceTutorial Git
Atas ialah kandungan terperinci Apakah kegunaan fail git pack?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!