Güncelleme: git prune
bu gevşek nesneleri kaldıracağı için sorunu "çözer"
( varsayılan olarak yalnızca iki haftadan daha eski gevşek nesneler için git gc
çağrılar git prune
).
Ancak OP Michael Donohue'un yorumlarda belirttiği gibi:
Gevşek nesneleri iki hafta boyunca ortalıkta tutmanın güvenlik yönünü seviyorum, geri dönüp bazı eski revizyonlara bakmak istersem, bu çözümü gerçekten sevmiyorum.
Git'in boyutu veya performansıyla ilgili herhangi bir sorun yaşamıyorum, sadece 'git gui', veritabanını sıkıştırmanın hiçbir etkisi olmasa bile veritabanını sıkıştırmamı istemekte ısrar ediyor.
Orijinal cevap:
" git gc
" Tüm gevşek nesnelerin kaldırılamaması sorunu daha önce bildirilmişti (2008 sonlarında, " " git gc
"artık gevşek nesneleri kaldırmıyor gibi görünüyor "
git gc
sadece iki haftadan daha eski olan gevşek nesneleri kaldırır, eğer gerçekten şimdi kaldırmak istiyorsanız git prune çalıştırın.
Ancak çalıştırdığınızda başka hiçbir git işleminin etkin olmadığından emin olun, aksi takdirde bir şeye basılabilir.
" git gc
" Olacaktır paketten ulaşılamaz hale gelir ve paketler şu anda edildi nesneleri.
Sonuç olarak, bir git depo tarafından kullanılan disk alanı miktarı aslında gidebilir kadar bir "sonra dramatik git gc
kendi dosya sistemi üzerinde tam yakın çalışan birisinin şaşırtıcı olabilir" operasyonunda, bir izleme deposundan şube bir dizi siler ve sonra bir " git gc
" çok tatsız bir sürpriz yapabilir.
[
Örnek: ]
Eski dallar gibi bir etiketle rezerve edilir next-20081204
.
Deponun yerel kopyanızı linux-next
her gün güncellerseniz, bu eski dal etiketlerinin büyük bir kısmını biriktireceksiniz.
Daha sonra bunların bir dizisini silip çalıştırırsanız git-gc
, işlem oldukça uzun sürecek ve kullanılan blok ve inode sayısı önemli ölçüde artacaktır.
Bir " git prune
" sonrasında kaybolacaklar , ancak bu temizlik işlemini yaptığımda, sık sık --yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repository
"git gc" seçeneğini diledim .
Yani sizin durumunuzda, bir " git prune
" yardımcı olur mu?
(muhtemelen gc.pruneexpire
yapılandırma değişkeninde "şimdi" kullanıldığında , yukarıdaki davranışın gerçekleşmesi için gereklidir).
Ayrıca (aynı konu başlığından):
repack -a -d -l
Küçük 'a' harfine dikkat edin.
git-gc
Erişilemeyen nesnelerin paketten çıkarılmasına neden olan yeniden paketlemeyi büyük 'A' ile çağırır. Küçük 'a', ne yaptığını bilen ve git'in ulaşılamayan nesneleri düşürmesini isteyenler içindir.