2015-02-20 21 views
55

Not: Yapmam bu bir kurnazca farklı hata mesajı ile budala asılı olmayan bir arka plan paketi bahsediyor this question kopyası olduğunu düşünmüyorum. Benim git depoları birindeGit neden bana "Optimum performans için depoyu otomatik olarak arka planda paketleme" olduğunu söylüyor?


, ben git fetch (örneğin) çağırmak her zaman, git baskılar:

Auto packing the repository in background for optimum performance. 
See "git help gc" for manual housekeeping. 

Ben defalarca bir git fetch yaparsanız bile, bu her zaman yazdırmak için görünür git fetch için yapılacak hiçbir değişiklik yoktur. Bu bana pek bir şey ifade etmiyor. Ayrıca git push ve git pull gibi diğer ağ işlemleriyle de gerçekleşir.

Komut, daha fazla çıkış olmaksızın hemen istemciye geri döner ve makinemde herhangi bir git işlemi bulamıyorum. Sadece bu depoda ve sadece bu makinede gerçekleşmiş gibi görünüyor. git config -l | grep gc hiçbir şey döndürmez.

Bu sorunu teşhis etmek veya düzeltmek için ne yapabilirim?

$ git --version 
git version 2.0.1 

OS X 10.9 kullanıyorum.

+0

Bağlandığınız soruyla aynı soruna benzer, ancak askıda görünmeyecek kadar hızlı gerçekleşiyor. – Holloway

+0

Ayrıca [muhtemelen ilgili] (http://stackoverflow.com/questions/17925471/why-does-git-run-auto-packing-on-every-push-to-our-repo) – Holloway

+0

Trengot, yok öyle düşünüyorum. Hata mesajı çok farklıdır - "arka plan" dan bahseder. –

cevap

105

Sağladığınız ikinci yorumdan çözüm buldum, Trengot, teşekkürler.

$ git fsck 
dangling blob d9ff0aeac4aa8b4e0907daed675ebf60278bc977 
dangling blob dbff2d073741f9775c815d4a3c623736af224dad 
dangling blob e1ffbab1c5b985cd1cd3bc0281075ea2ed80744a 
dangling blob fdff59878ccb3a75689f4acca615cfb635288774 

Bu onları temizlemiş:

$ git gc --prune=now 

aşağıda Henrik yorumuyla, bu may gereğince, unutmayın Ben .git/objects/17 vardı ve bu nedenle paketleme tetikleyen bazı sarkan lekeler vardı çıkıyor biraz tehlikeli ol. Kendine iyi bak!

+2

Teşekkürler! Bu benim için çalışıyor gibi görünüyordu. '--prune = şimdi' biraz tehlikeli olduğunu unutmayın. Varsayılan olarak, --prune, 2 hafta sarkan blobları tutacaktır, yani 5 dakika önce yanlış bir rebase yaptıysanız ya da dün bir dalı kaldırırsanız, iyileşebilirsiniz. Bu komutu çalıştırdığınızda, şu ana kadar tüm sallanan blogları kaybedersiniz - 2 hafta önce değil. Ayrıca, başka bir uçbirimde diğer Git komutlarını gerçekleştirirken asla çalıştırmamanız gerektiği gibi görünüyor (https://git-scm.com/docs/git-gc) veya repo'nuz bozulabilir. –

+1

İyi nokta, @HenrikN, Cevabım için bir yorum ekledim. –