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
(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.)
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
Objek longgar adalah format yang lebih sederhana. Ini hanyalah data terkompresi yang disimpan dalam satu file pada disk. Setiap objek ditulis ke file terpisah.
git gc
untuk Anda, dengan bilah kemajuan GUI yang bagus (meskipun sebagian besar waktu terlihat macet).Jawaban:
Objek (gumpalan, pohon, dan komit) dengan SHA mengatakan - 810cae53e0f622d6804f063c04a83dbc3a11b7ca akan disimpan di
(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.
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.)sumber
--prune
pilihan ini diaktifkan secara default, dan karenagit gc
secara otomatis dipicu oleh penggunaan umum (misalnyacommit
), 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 yanggc
dipicu oleh perintah yang dipanggil. Ini tentu saja tidak perlu dikhawatirkan, hanya disebabkan oleh penggunaan normal.git gc
secara 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.git
folder juga.Buku Git menjelaskannya dengan cukup baik: https://git-scm.com/book/en/v2/Git-Internals-Packfiles
sumber