Rumah  >  Artikel  >  alat pembangunan  >  Apakah kegunaan fail git pack?

Apakah kegunaan fail git pack?

WBOY
WBOYasal
2022-06-30 17:41:486994semak imbas

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.

Apakah kegunaan fail git pack?

Persekitaran pengendalian artikel ini: sistem Windows 10, Git versi 2.30.0, komputer Dell G3.

Apakah kegunaan fail pek git?

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 sejarah
git rev-list --objects --all | grep 35047899fd3b0dd637b0da2086e7a70fe27b1ccb
35047899fd3b0dd637b0da2086e7a70fe27b1ccb /wabapi/bulid/master-0.0.1.jar

4 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 --force
Tutorial Git

Atas ialah kandungan terperinci Apakah kegunaan fail git pack?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn