जवाबों:
मुझे यकीन नहीं है कि आप क्या चाहते हैं। सबसे पहले, निश्चित रूप से हर बार जब आप कमिट करते / करते हैं, तो डायरेक्टरी थोड़ी बड़ी हो जाती है, क्योंकि इसमें से प्रत्येक अतिरिक्त स्टोरेज को स्टोर करना होता है।
हालांकि, शायद आप चाहते हैं git gcकि "अनावश्यक फ़ाइलों को साफ करें और स्थानीय भंडार को अनुकूलित करें" ( मैनुअल पेज )।
एक और संभवतः प्रासंगिक कमांड है git cleanजो आपके पेड़ ( मैनुअल पेज ) से अनट्रैक की गई फ़ाइलों को हटा देगा ।
WARNINGजैसा कि @Kalle द्वारा ऊपर लिखी गई कमांड आपके GIT ROOT में से हर किसी को हटाएगी <UNTRACKED <FILE और DIRECTORY को हटा देगी , न कि केवल " .ignignore में सूचीबद्ध फाइलें"। कुछ भी जो Git द्वारा ट्रैक नहीं किया जा रहा है, चाहे वह लिस्ट में .gitignoreहो या न हो, मिटा दिया जाएगा। git clean -dfX(नोट मामले पर X) केवल उन वस्तुओं को हटा देगा जिनके पास एक लागू नियम है .gitignore। कृपया इस चेतावनी को ध्यान में रखें: कभी git cleanभी बिना इंटरेक्टिव मोड में दौड़ें, बिना -iइसके साथ -f, या कम से कम पहले ड्राई रन न करें - -nऔर फिर फिर से -f।
Daud:
git remote prune origin
सभी बासी ट्रैकिंग शाखाओं को हटाता है जो पहले ही हटा दिए गए हैं originलेकिन अभी भी स्थानीय रूप से उपलब्ध हैं remotes/origin।
git gc --auto
' G arbage C ollection' - हाउसकीपिंग के कामों को चलाता है (संशोधनों को संकुचित करता है, ढीली / दुर्गम वस्तुओं को हटाता है)। --autoझंडा पहले निर्धारित करता है किसी भी काम की आवश्यकता है, और यदि नहीं कुछ भी करने के बिना बाहर निकलता है।
एक परिदृश्य जहाँ आपका git रेपो प्रत्येक कमिट के साथ गंभीर रूप से बड़ा हो जाएगा , एक वह जगह है जहाँ आप बाइनरी फ़ाइलों को नियमित रूप से उत्पन्न करते हैं। उनका भंडारण पाठ फ़ाइल की तुलना में कुशल नहीं होगा ।
एक और वह है जहां आपके पास कई सबरपोज़ (सबमॉड्यूल्स के रूप में प्रबंधित ) के बजाय एक रेपो (जो कि गिट की सीमा है ) के भीतर बड़ी संख्या में फाइलें हैं ।
गिट स्पेस पर इस लेख में , अलब्लू का उल्लेख है:
ध्यान दें कि Git (और Hg, और अन्य DVCS) एक समस्या से ग्रस्त हैं जहां (बड़े) बायनेरिज़ की जाँच की जाती है, फिर हटा दिया जाता है, क्योंकि वे अभी भी रिपॉजिटरी में दिखाएंगे और जगह ले लेंगे, भले ही वे चालू न हों। ।
यदि आपके पास अपने गैटो रेपो में बड़ी बायनेरिज़ संग्रहीत हैं, तो आप इस पर विचार कर सकते हैं:
git filter-branch (चेतावनी: यह इतिहास है, जो बुरा है पुनर्लेखन अगर आप पहले से ही अपने रेपो धकेल दिया और अन्य इसे से खींच लिया है)मैं में उल्लेख किया है " क्या Git में फ़ाइल सीमा (संख्या और आकार)? हैं , और हाल ही में" (2015, इस जवाब के बाद 5 वर्ष) Git LFS GitHub से (उन्हें भंडारण के द्वारा उन बड़े फाइलों का प्रबंधन करने के लिए एक तरीका है बाहर Git भंडार)।
हाँ हाँ, git gc समाधान है, स्वाभाविक रूप से,
और स्थानीय रूप से - आप स्थानीय भंडार को हटा सकते हैं और इसे फिर से क्लोन कर सकते हैं,
उस विशाल गिट और एक्सटर्नल की प्रक्रिया के लिए आपके द्वारा प्रतीक्षा की जाने वाली सेकंड्स को लंबे समय तक एकत्र किया जाता है, जिसमें घंटों समय के लिए एकत्र किया जाता है,
स्वाभाविक रूप से फ़ाइलों के एकमात्र हाल के संस्करण सहित, खरोंच से एक नया (पूरी तरह से, न केवल एक शाखा) रिपॉजिटरी बनाएं आप सभी इतिहास को ढीला कर देंगे,
लेकिन जब कोड-दुनिया में यह भावुक होने का समय नहीं है, तो कोड के पूरे 5 साल के साथ हर कमिटमेंट या अलग होने का कोई मतलब नहीं है, अगर आप उदासीन हो जाते हैं, तो आप पुराने गेट और एक्सटर्नल को कहीं स्टोर कर सकते हैं]
लेकिन, कुछ बिंदु पर आपको वास्तव में साथ चलना होगा:]
आपकी टीम आपको धन्यवाद देगी!
इस आदेश को चलाना बेहद खतरनाक है, लेकिन आपकी सभी रिकवरी / बैकअप फ़ाइलों को मिटाकर आपकी रिपॉजिटरी को सिकोड़ देगा:
git reflog expire --expire=now --all && git gc --prune=now --aggressive
यह सभी फ़ाइलों को मिटा देगा कुछ खराब कमांड से आपकी रिपॉजिटरी को पुनर्प्राप्त करने के लिए उपयोग करता है, उदाहरण के लिए, यदि आपने किया git reset --hard, तो आप आमतौर पर खो गई फ़ाइलों को पुनर्प्राप्त कर सकते हैं। लेकिन अगर आप आज्ञा git reset --hardसे पहले करते हैं git reflog expire..., तो आपने सब कुछ खो दिया। अब, आपकी एकमात्र आशा कुछ उपकरण का उपयोग करना है जो आपकी फ़ाइल प्रणाली का विश्लेषण करता है और मिटाए गए फ़ाइलों को पुनर्प्राप्त करने का प्रयास करता है, अगर वे ओवरराइड नहीं थे।
git clean -d -f -i यह करने का सबसे अच्छा तरीका है।
यह अधिक नियंत्रित तरीके से सफाई करने में मदद करेगा।
-i इंटरैक्टिव के लिए खड़ा है।
git cleanरेपो को साफ करने के लिए नहीं है ताकि निर्देशिका को साफ किया जा सके। उन उपयोगकर्ताओं के लिए जो नेत्रहीन कॉपी / पेस्ट करते हैं, सावधान रहें; यह आपके द्वारा वास्तव में स्थानीय रूप से वांछित अनट्रैक की गई फ़ाइलों / dirs को हटा देता है।
नहीं पता कि यह इसे सिकोड़ लेगा, लेकिन मेरे दौड़ने के बाद git clean, मैं अक्सर ऐसा git repack -adकरता हूं , जिससे पैक फ़ाइलों की संख्या कम हो जाती है।
git gcप्रक्रिया का एक हिस्सा है , इसलिए इसे अलग से चलाने की कोई आवश्यकता नहीं है