Apa "objek longgar" yang dirujuk oleh Git GUI?


219

Ketika saya membuka Git GUI , saya mendapatkan pesan sembulan yang merujuk loose objects. Saya lakukan git gcdan itu menghapus pesan.

Apa loose objectsdan bagaimana saya bisa mencegah ini terjadi lagi?


Anda cukup mengklik "Ya" di pesan sembulan ketika ditanya apakah benda yang longgar harus dikemas sekarang. Git GUI akan berjalan git gcuntuk Anda, dengan bilah kemajuan GUI yang bagus (meskipun sebagian besar waktu terlihat macet).
ADTC

Jawaban:


144

Objek (gumpalan, pohon, dan komit) dengan SHA mengatakan - 810cae53e0f622d6804f063c04a83dbc3a11b7ca akan disimpan di

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

(pemisahan dua karakter pertama untuk meningkatkan kinerja sistem File karena sekarang tidak semua objek disimpan dalam direktori yang sama)

Objek yang disimpan seperti di atas disebut sebagai objek yang longgar.

Ketika Anda memulai dengan repo Anda, Anda kebanyakan memiliki benda-benda longgar. Ketika angkanya tinggi, itu menjadi tidak efisien dan mereka disimpan dalam file paket. Benda-benda semacam itu disebut benda-benda yang dikemas.

 git gc

adalah apa yang Anda jalankan untuk mengemas objek (Biasanya objek longgar yang tidak diperlukan dan berumur beberapa minggu juga dihapus dan dengan --prune=<date>opsi Anda dapat memaksa menghapus objek longgar yang tidak lagi diperlukan. Seperti saat Anda mengubah komit. Objek komit lama tidak ada lebih lama dibutuhkan.)


3
The --prunepilihan ini diaktifkan secara default, dan karena git gcsecara otomatis dipicu oleh penggunaan umum (misalnya commit), Anda biasanya tidak perlu khawatir tentang hal ini. Saya tidak menggunakan git gui, dan saya tidak bisa menemukan di mana ia dipicu pada sumbernya, tetapi apakah ia melakukan pemeriksaan sendiri, atau hanya memotong yang gcdipicu oleh perintah yang dipanggil. Ini tentu saja tidak perlu dikhawatirkan, hanya disebabkan oleh penggunaan normal.
Cascabel

21
apakah ada kerugian untuk mengemas benda-benda longgar? Jika tidak, mengapa Git tidak melakukannya secara otomatis?
Louis Rhys

13
Saya tidak berpikir itu benar bahwa itu terjadi secara otomatis. Saya sering melakukan tetapi 'git gui' disebutkan memiliki 50.000 objek longgar (dan telah bertanya-tanya mengapa git sangat lambat, proyek besar lebih dari ~ 4 tahun tanpa manual gc)
Kevin

1
@Kevin Apakah kinerja proyek besar Anda membaik setelah berjalan git gcsecara manual? Saya pikir itu harus ditingkatkan, karena benda longgar tidak efisien, dan 50.000 adalah jumlah yang sangat besar. Saya juga menemukan bahwa pengepakan sangat mengurangi ruang yang digunakan oleh .gitfolder juga.
ADTC

3
@LouisRhys, "Ketika objek ditulis ke disk, sering kali dalam format longgar, karena format itu lebih murah untuk diakses. Namun, pada akhirnya Anda ingin menghemat ruang dengan mengemas objek" - dari Git Book Tautan dalam jawaban
chris

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.