2011-08-26 11 views
7

Yanlışlıkla bir db dökümünü (1 GB'nin üzerinde) repouma ekledim, ittim ve birkaç gün sonra fark ettim. Ben dosyayı silmek için git filtre-şube, süresi dolmuş reflog ve kullanılmayan nesneleri eritmek için git gc çalıştırın, ancak veritabanı dökümü blob hala repo içinde. Ben Which commit has this blob? kullandım, ama blob için bir referansı olan herhangi bir taahhüt buldunuz. Bunu nasıl silebilirim veya git gc sırasında neden silinmediğini nasıl öğrenebilirim?Git repodan bir blob nasıl silinir?

+1

misiniz http://stackoverflow.com/questions/2116778/reduce-git aramak zorunda "2 hafta önce" dir -repository-size/2116892 # 2116892 yardım? veya http://stackoverflow.com/questions/1029969/why-is-my-git-repository-so-big? – VonC

cevap

13

Git gc'yi çalıştırırken tam olarak hangi komutu çağırdınız?

Not git gc ait manpage: başvurulmayan gevşek nesneler budanırlar önce olmak zorunda kaç yaşında

opsiyonel yapılandırma değişkeni gc.pruneExpire kontrolleri. Varsayılan senin blob genç 14 günden ise

Yani,

git gc --prune=<date> (for date you also can insert now) 
+0

Teşekkürler, pruneExpire seçeneğini fark etmedim ve gitmenin belirli bir süre için ilgisiz nesneleri tuttuğunu bilmiyordum. Önceden, git gc --prune --aggressive koştum. Şimdi git gc --prune önce git reflog --all --expire = 'ı çalıştırdım ve blobu sildim. –

0

rm .git/objects/path/to/blob yapamaz mısınız?

Neden git-gc'un silemediğinden emin değilim.

+10

Aşağı çekerken, herkes nedenini açıklayabilir. Bir konuda okumanın, bir şeyin neden daha az çekici olduğunu veya sadece yanlış olduğunu öğrenmesine yardımcı olur. :) –