2011-05-12 16 views
5

Sorun, silme ve itme kolunuzdan sonra sonsuza kadar kaybolmadığı ve depoda kalmasıdır. Büyük miktarda gereksiz dosyaları içeren bir dalı sildiğim halde, git deposunda hala bir yerlerde olduğu için, git clone komutu süresi çok büyük.Bir şube ve başvurulan tüm nesneler nasıl silinir

Şu anda görebildiğim tek yol, tüm depoyu silmektir ve gereksiz bir şube olmaksızın yeniden oluşturmaktır. Bütün taahhüt gelen

cevap

4

git gc --prune=now'un ne istediğinizi yapacağına inanıyorum: gereksiz dosyaları depodan temizleyin.

Varsayılan olarak git gc, 2 haftadan daha eski erişilemeyen işleri kaldırır, böylece --prune=now ekleyerek ihtiyacınız olan şeydir.

+0

+1 git gc, depodaki gevşek nesneleri temizleyecektir. Ancak, çok zaman alan klonla ilgili sorun, hala repoda bulunan eski dosya revizyonlarıyla ilgilidir. – ralphtheninja

+0

Prune için teşekkürler, sorumu düzenler. Anlaşılan taahhütler silinemezse (ki bu durum böyle görünüyorsa), “prune” – CharlesB

+1

tarafından silinir. Nedeni, şubelerinizin durumlarına referanslar içeren reflogdur. dallar zaten silinmiştir. –

3

Sen bu komutla sihirli bir çok şey yapabilir

http://git-scm.com/docs/git-filter-branch

git filtresi-dal kullanarak tamamen dosyaları kaldırmak gerekir, şu dosya adı kaldıracaktır:

git filter-branch --tree-filter 'rm -f filename' HEAD 
+0

sadece meraklı: eğer taahhüt silinirse, şube silinirse, 'git gc' kaldırılmıyor mu? – CharlesB

+0

@CharlesB: Evet, ancak tüm verileri silmek için git gc --prune = şimdi kullanmak isteyebilirsiniz. Bununla birlikte, bu yalnızca yerel veri havuzuna ait verilerdir ve klonlama sırasında herhangi bir etkisi yoktur. Görünüşe göre bu soru iki katlıdır. – ralphtheninja

İlgili konular