जवाबों:
SHA के साथ एक ऑब्जेक्ट (बूँदें, पेड़ और कमिट) कहते हैं - 810cae53e0f622d6804f063c04a83db3a11b7ca पर संग्रहीत किया जाएगा
.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca
(फाइल सिस्टम के प्रदर्शन को बेहतर बनाने के लिए पहले दो वर्णों में विभाजन के रूप में अब सभी वस्तुओं को एक ही निर्देशिका में संग्रहीत नहीं किया जाता है)
ऊपर के रूप में संग्रहीत वस्तुओं को ढीली वस्तुओं के रूप में संदर्भित किया जाता है।
जब आप अपने रेपो के साथ शुरू करते हैं, तो आपके पास ज्यादातर ढीली वस्तुएं होती हैं। जैसे ही संख्या अधिक होती है, यह अक्षम हो जाता है और वे एक पैक फ़ाइल में संग्रहीत होते हैं। ऐसी वस्तुओं को पैक्ड ऑब्जेक्ट कहा जाता है।
git gc
वह है जो आप वस्तुओं को पैक करने के लिए चलाते हैं (आमतौर पर ढीली वस्तुओं की जरूरत नहीं होती है और कुछ सप्ताह पुरानी भी हटा दी जाती है और --prune=<date>विकल्प के साथ आप ढीली वस्तुओं को हटाने के लिए बाध्य कर सकते हैं जिनकी अब आवश्यकता नहीं है। जैसे कि जब आप कोई संशोधन करते हैं। पुरानी प्रतिबद्ध वस्तु नहीं है अब जरूरत है।)
--pruneविकल्प डिफ़ॉल्ट रूप से सक्षम किया गया है, और के बाद से git gcस्वचालित रूप से आम उपयोग (जैसे से शुरू हो रहा commit), तो आप आम तौर पर इस बारे में चिंता करने की जरूरत नहीं है। मैं git gui का उपयोग नहीं करता हूं, और मुझे यह बिल्कुल नहीं मिल रहा है कि यह स्रोत में कहां ट्रिगर किया गया है, लेकिन या तो यह अपनी जांच करता है, या केवल gcएक कमांड द्वारा ट्रिगर को इंटरसेप्ट करता है । यह निश्चित रूप से चिंता की कोई बात नहीं है, हालांकि, सामान्य उपयोग के कारण।
git gcमैन्युअल रूप से चलने के बाद आपकी बड़ी परियोजना के प्रदर्शन में सुधार हुआ ? मुझे लगता है कि इसमें सुधार होना चाहिए, क्योंकि ढीली वस्तुएं अक्षम हैं, और 50,000 एक बहुत बड़ी संख्या है। मुझे यह भी पता चला कि पैकिंग .gitफ़ोल्डर द्वारा उपयोग किए जाने वाले स्थान को बहुत कम करता है ।
Git Book इसे बहुत अच्छी तरह से समझाती है: https://git-scm.com/book/en/v2/Git-Internals-backlesiles
ढीली वस्तुएं सरल प्रारूप हैं। यह केवल डिस्क पर एकल फ़ाइल में संग्रहीत संपीड़ित डेटा है। प्रत्येक वस्तु एक अलग फ़ाइल में लिखी जाती है।
git gcआपके लिए चलेगा , एक अच्छी GUI प्रगति पट्टी के साथ (यद्यपि अधिकांश समय के रूप में दिखाया गया है)।