Git GUI को संदर्भित करने वाली "ढीली वस्तुएँ" क्या हैं?


219

जब मैं जीआईटी जीयूआई खोलता हूं , तो मुझे एक पॉपअप संदेश मिलता है जो संदर्भित करता है loose objects। मैंने किया git gcऔर उस संदेश को हटा दिया।

क्या हैं loose objectsऔर मैं इसे फिर से होने से कैसे रोक सकता हूं?


आप पॉपअप संदेश में बस "हां" पर क्लिक कर सकते हैं जब यह पूछता है कि क्या ढीली वस्तुओं को अब पैक किया जाना चाहिए। गिट GUIgit gc आपके लिए चलेगा , एक अच्छी GUI प्रगति पट्टी के साथ (यद्यपि अधिकांश समय के रूप में दिखाया गया है)।
ADTC

जवाबों:


144

SHA के साथ एक ऑब्जेक्ट (बूँदें, पेड़ और कमिट) कहते हैं - 810cae53e0f622d6804f063c04a83db3a11b7ca पर संग्रहीत किया जाएगा

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

(फाइल सिस्टम के प्रदर्शन को बेहतर बनाने के लिए पहले दो वर्णों में विभाजन के रूप में अब सभी वस्तुओं को एक ही निर्देशिका में संग्रहीत नहीं किया जाता है)

ऊपर के रूप में संग्रहीत वस्तुओं को ढीली वस्तुओं के रूप में संदर्भित किया जाता है।

जब आप अपने रेपो के साथ शुरू करते हैं, तो आपके पास ज्यादातर ढीली वस्तुएं होती हैं। जैसे ही संख्या अधिक होती है, यह अक्षम हो जाता है और वे एक पैक फ़ाइल में संग्रहीत होते हैं। ऐसी वस्तुओं को पैक्ड ऑब्जेक्ट कहा जाता है।

 git gc

वह है जो आप वस्तुओं को पैक करने के लिए चलाते हैं (आमतौर पर ढीली वस्तुओं की जरूरत नहीं होती है और कुछ सप्ताह पुरानी भी हटा दी जाती है और --prune=<date>विकल्प के साथ आप ढीली वस्तुओं को हटाने के लिए बाध्य कर सकते हैं जिनकी अब आवश्यकता नहीं है। जैसे कि जब आप कोई संशोधन करते हैं। पुरानी प्रतिबद्ध वस्तु नहीं है अब जरूरत है।)


3
--pruneविकल्प डिफ़ॉल्ट रूप से सक्षम किया गया है, और के बाद से git gcस्वचालित रूप से आम उपयोग (जैसे से शुरू हो रहा commit), तो आप आम तौर पर इस बारे में चिंता करने की जरूरत नहीं है। मैं git gui का उपयोग नहीं करता हूं, और मुझे यह बिल्कुल नहीं मिल रहा है कि यह स्रोत में कहां ट्रिगर किया गया है, लेकिन या तो यह अपनी जांच करता है, या केवल gcएक कमांड द्वारा ट्रिगर को इंटरसेप्ट करता है । यह निश्चित रूप से चिंता की कोई बात नहीं है, हालांकि, सामान्य उपयोग के कारण।
कैस्केबेल

21
क्या ढीली वस्तुओं को पैक करने में कोई कमी है? यदि नहीं, तो Git इसे स्वचालित रूप से क्यों नहीं करता है?
लुई रईस

13
मुझे नहीं लगता कि यह सच है कि यह स्वचालित रूप से होता है। मैं अक्सर कमिट करता हूं लेकिन 'git gui' में उल्लेख किया गया था कि 50,000 ढीली वस्तुएं हैं (और सोच रहा था कि git इतना मंद क्यों था, ~ मैनुअल के साथ 4 साल में बड़ी परियोजना जीसी नहीं)
केविन

1
@ केविन git gcमैन्युअल रूप से चलने के बाद आपकी बड़ी परियोजना के प्रदर्शन में सुधार हुआ ? मुझे लगता है कि इसमें सुधार होना चाहिए, क्योंकि ढीली वस्तुएं अक्षम हैं, और 50,000 एक बहुत बड़ी संख्या है। मुझे यह भी पता चला कि पैकिंग .gitफ़ोल्डर द्वारा उपयोग किए जाने वाले स्थान को बहुत कम करता है ।
ADTC

3
@LouisRhys, "जब वस्तुओं को डिस्क पर लिखा जाता है, तो यह अक्सर ढीले प्रारूप में होता है, क्योंकि यह प्रारूप एक्सेस करने के लिए महंगा है। हालांकि, अंततः आप वस्तुओं को पैक करके अंतरिक्ष को बचाना चाहेंगे" - गिट बुक से - नीचे दिए गए उत्तर
क्रिस

39

Git Book इसे बहुत अच्छी तरह से समझाती है: https://git-scm.com/book/en/v2/Git-Internals-backlesiles

ढीली वस्तुएं सरल प्रारूप हैं। यह केवल डिस्क पर एकल फ़ाइल में संग्रहीत संपीड़ित डेटा है। प्रत्येक वस्तु एक अलग फ़ाइल में लिखी जाती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.