Pembaruan: git prune
akan "memecahkan" masalah, dalam hal itu akan menghapus objek yang longgar
( git gc
panggilan git prune
, tetapi hanya untuk objek longgar yang lebih tua dari dua minggu, secara default).
Namun, seperti yang disebutkan oleh OP Michael Donohue di komentar:
Saya sangat menyukai aspek keamanan menyimpan benda-benda yang lepas selama dua minggu, jika saya ingin kembali dan melihat beberapa revisi lama, jadi saya tidak terlalu menyukai solusi ini.
Saya tidak mengalami masalah dengan ukuran atau kinerja git, hanya 'git gui' yang meminta saya untuk mengompresi database, bahkan saat mengompresi database tidak akan berpengaruh.
Jawaban asli:
Masalah " git gc
" tidak menghilangkan semua benda lepas telah dilaporkan sebelumnya (akhir 2008, " " git gc
"sepertinya tidak menghilangkan benda lepas lagi "
git gc
hanya membuang benda lepas yang berumur lebih dari dua minggu, jika Anda benar-benar ingin membuangnya sekarang, jalankan git prune.
Tetapi pastikan tidak ada proses git lain yang dapat aktif saat Anda menjalankannya, atau mungkin menginjak sesuatu.
" git gc
" akan membongkar objek yang tidak dapat dijangkau dan saat ini ada dalam paket.
Akibatnya, jumlah ruang disk yang digunakan oleh repositori git dapat benar-benar naik secara dramatis setelah git gc
operasi " ", yang mungkin mengejutkan bagi seseorang yang hampir kehabisan ruang pada sistem file mereka, menghapus sejumlah cabang dari repositori pelacakan , dan kemudian melakukan " git gc
" mungkin mendapatkan kejutan yang sangat tidak menyenangkan.
[
Contoh: ]
Cabang lama dipesan melalui tag seperti next-20081204
.
Jika Anda memperbarui salinan lokal linux-next
repositori Anda setiap hari, Anda akan mengakumulasikan banyak tag cabang lama ini.
Jika Anda kemudian menghapus seluruh rangkaiannya, dan menjalankannya git-gc
, operasi akan memakan waktu cukup lama, dan jumlah blok dan inode yang digunakan akan bertambah secara signifikan.
Mereka akan menghilang setelah " git prune
", tetapi saat saya melakukan operasi rumah tangga ini, saya sering berharap ada --yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repository
opsi untuk "git gc".
Jadi, dalam kasus Anda, apakah " git prune
" bisa membantu?
(mungkin dengan menggunakan "sekarang" dalam gc.pruneexpire
variabel config, diperlukan agar perilaku di atas terjadi).
Anda juga memiliki (dari utas yang sama):
repack -a -d -l
Perhatikan huruf kecil 'a'.
git-gc
panggilan membungkus kembali dengan huruf besar 'A' yang menyebabkan objek yang tidak dapat dijangkau dibongkar. Sedikit 'a', untuk orang yang tahu apa yang mereka lakukan, dan ingin git menjatuhkan benda yang tidak terjangkau.