Git GUI'nin ifade ettiği “gevşek nesneler” nelerdir?


219

Ben açtığınızda Git GUI , ben başvuran bir pop-up mesajı alır loose objects. Yaptım git gcve bu mesajı sildi.

Bunun loose objectstekrarlanmasının ne olduğunu ve nasıl önleyebilirim?


Gevşek nesnelerin şimdi paketlenip paketlenmeyeceğini sorduğunda, açılır pencerede "Evet" i tıklamanız yeterlidir . Git GUI , git gcgüzel bir GUI ilerleme çubuğuyla (çoğu zaman sıkışmış olsa da) sizin için çalışacaktır .
ADTC

Yanıtlar:


144

SHA say - 810cae53e0f622d6804f063c04a83dbc3a11b7ca adresinde bir nesne (lekeler, ağaçlar ve taahhütler)

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

(Dosya sisteminin performansını artırmak için ilk iki karakterdeki bölünme, şimdi tüm nesneler aynı dizinde depolanmadığından)

Yukarıdaki gibi saklanan nesnelere Gevşek nesneler denir.

Reponunuza başladığınızda, çoğunlukla gevşek nesneleriniz olur. Sayı yükseldikçe, verimsiz hale gelir ve bir paket dosyasında saklanır. Bu tür nesnelere paketlenmiş nesneler denir.

 git gc

Nesneleri paketlemek için çalıştırdığınız şeydir (Genellikle gerekli olmayan ve birkaç hafta eski olan gevşek nesneler de kaldırılır ve --prune=<date>seçenekle artık gerekli olmayan gevşek nesneleri kaldırmaya zorlayabilirsiniz. Bir taahhüdü değiştirdiğinizde olduğu gibi. daha uzun süre gereklidir.)


3
Bu --pruneseçenek varsayılan olarak etkindir ve git gcyaygın kullanım (örneğin commit) tarafından otomatik olarak tetiklendiğinden , genellikle bu konuda endişelenmenize gerek yoktur. Git gui kullanmıyorum ve kaynakta tam olarak nerede tetiklendiğini bulamıyorum, ama ya kendi kontrolünü yapıyor ya da sadece gcçağrılan bir komut tarafından tetikleniyor. Yine de, sadece normal kullanımdan dolayı endişelenecek bir şey yoktur.
Cascabel

21
gevşek nesneleri paketlemenin bir dezavantajı var mı? Değilse, Git neden otomatik olarak yapmıyor?
Louis Rhys

13
Bunun otomatik olarak gerçekleşmesinin doğru olduğunu düşünmüyorum. Sık sık söz veriyorum ama 'git gui' sözü 50.000 gevşek nesneye sahipti (ve git'in neden manuel gc olmadan ~ 4 yıl boyunca çok yavaş, büyük bir proje olduğunu merak ediyordum)
Kevin

1
@Kevin git gcElle çalıştırdıktan sonra büyük projenizin performansı iyileşti mi? Bence düzelmeli, çünkü gevşek nesneler verimsiz ve 50.000 çok büyük bir sayı. Ayrıca paketlemenin .gitklasör tarafından kullanılan alanı da önemli ölçüde azalttığını öğrendim .
ADTC

3
@LouisRhys, "Nesneler diske yazıldığında, bu biçime erişmek daha ucuz olduğu için genellikle gevşek biçimde olur. Ancak, sonunda nesneleri paketleyerek alandan tasarruf etmek istersiniz" - Git Book'tan Aşağıdaki
chris

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.