Seberapa sering Anda harus menggunakan git-gc?
The halaman pengguna hanya mengatakan:
Pengguna didorong untuk menjalankan tugas ini secara teratur dalam setiap repositori untuk mempertahankan pemanfaatan ruang disk yang baik dan kinerja operasi yang baik.
Apakah ada beberapa perintah untuk mendapatkan jumlah objek untuk mengetahui apakah sudah waktunya untuk gc?
gc.autodetach
(Git 2.0 Q2 2014) dapat membantu menjalankangit gc --auto
tanpa mengganggu pengguna. lihat jawaban saya di bawah ini .Jawaban:
Sebagian besar tergantung pada seberapa banyak repositori digunakan. Dengan satu pengguna memeriksa sekali sehari dan operasi cabang / gabungan / dll seminggu sekali Anda mungkin tidak perlu menjalankannya lebih dari sekali setahun.
Dengan beberapa lusin pengembang bekerja pada beberapa lusin proyek masing-masing memeriksa dalam 2-3 kali sehari, Anda mungkin ingin menjalankannya setiap malam.
Tidak ada ruginya untuk menjalankannya lebih sering daripada yang dibutuhkan.
Apa yang saya lakukan adalah menjalankannya sekarang, lalu seminggu dari sekarang mengambil pengukuran pemanfaatan disk, jalankan lagi, dan mengukur pemanfaatan disk lagi. Jika ukurannya turun 5%, maka jalankan seminggu sekali. Jika turun lebih banyak, maka jalankan lebih sering. Jika kurang tetes, maka jalankan lebih jarang.
sumber
Perhatikan bahwa sisi negatif dari pengumpulan sampah repositori Anda adalah, yah, sampah dikumpulkan. Seperti kita ketahui sebagai pengguna komputer, file yang kita anggap sampah sekarang mungkin menjadi sangat berharga tiga hari di masa depan. Fakta bahwa git menyimpan sebagian besar puing-puingnya telah menyelamatkan bacon saya beberapa kali - dengan menelusuri semua komitmen yang menggantung, saya telah memulihkan banyak pekerjaan yang secara tidak sengaja saya kalengan.
Jadi jangan terlalu aneh dalam klon pribadi Anda. Hanya ada sedikit kebutuhan untuk itu.
OTOH, nilai pemulihan data dipertanyakan untuk repo yang digunakan terutama sebagai remote, misalnya. tempat semua devs dorong ke dan / atau ditarik dari. Di sana, mungkin masuk akal untuk memulai menjalankan GC dan pengemasan ulang sering.
sumber
git gc --help
, Khususnya--prune
opsi). Ada juga yang menyebutkangc.reflogExpire
, yang membuat saya percaya bahwa setiap komitmen yang Anda kunjungi dalam 90 hari terakhir tidak akan dikumpulkan. (Versi git saya: v1.7.6)Versi terbaru dari git menjalankan gc secara otomatis ketika diperlukan, jadi Anda tidak perlu melakukan apa pun. Lihat bagian Opsi man git-gc (1) : "Beberapa perintah git menjalankan git gc --auto setelah melakukan operasi yang dapat membuat banyak objek longgar."
sumber
gc --auto
, saya kira.Jika Anda menggunakan Git-Gui , itu memberi tahu Anda saat Anda harus khawatir:
Perintah berikut akan membawa nomor yang sama:
Kecuali, dari sumbernya , git-gui akan menghitung sendiri, menghitung sesuatu di
.git/objects
folder dan mungkin membawa perkiraan (saya tidak tahutcl
cara membacanya dengan benar!).Bagaimanapun, tampaknya memberikan peringatan berdasarkan angka sewenang-wenang sekitar 300 objek longgar.
sumber
Git-Gui
dancount-objects
bukan jawaban yang tepat untuk pertanyaan di sini ... Tapi seharusnya begitu!Jatuhkan dalam tugas cron yang berjalan setiap malam (sore?) Ketika Anda tidur.
sumber
Saya menggunakan git gc setelah saya melakukan checkout besar, dan memiliki banyak objek baru. itu bisa menghemat ruang. Misalnya jika Anda checkout proyek SVN besar menggunakan git-svn, dan melakukan git gc, Anda biasanya menghemat banyak ruang
sumber
Anda dapat melakukannya tanpa gangguan apa pun, dengan pengaturan baru (Git 2.0 Q2 2014)
gc.autodetach
.Lihat komit 4c4ac4d dan komit 9f673f9 ( Nguyễn Thái Ngọc Duy, alias pclouds ):
Sejak rilis 2.0, ada bug meskipun: git 2.7 (Q4 2015) akan memastikan untuk tidak kehilangan pesan kesalahan .
Lihat komit 329e6e8 (19 Sep 2015) oleh Nguyễn Thái Ngọc Duy (
pclouds
) .(Digabung oleh Junio C Hamano -
gitster
- dalam komit 076c827 , 15 Okt 2015)sumber
Kutipan ini diambil dari; Kontrol Versi dengan Git
sumber
git commit --amend
). Ini dapat diverifikasi dengangit log --reflog
. Saya mendorong cabang ke repositori jarak jauh dan memeriksa pohon saya lagi; komitmen yang tidak terjangkau masih ada di sana. Rupanyagit gc
tidak berjalan ketika dorongan ini terjadi. …?Saya menggunakan ketika saya melakukan komit besar, terutama ketika saya menghapus lebih banyak file dari repositori .. setelah itu, komit lebih cepat
sumber
Anda tidak harus
git gc
sering menggunakannya , karenagit gc
(Pengumpulan sampah) dijalankan secara otomatis pada beberapa perintah yang sering digunakan:Sumber: praktik terbaik dan FAQ git gc
sumber