अद्यतन: git prune
"हल" होगा मुद्दा है, में है कि यह (, git prune
, लेकिन केवल दो सप्ताह से अधिक पुराने ढीली वस्तुओं के लिए git gc
कॉल डिफ़ॉल्ट रूप से) उन ढीला वस्तुओं
निकाल देंगे।
हालांकि, OP Michael Donohue टिप्पणी में उल्लेख के रूप में:
मैं दो सप्ताह के लिए चारों ओर ढीला वस्तुओं रखने का सुरक्षा के पहलू की तरह करते हैं, मैं वापस जाने के लिए और कुछ पुराने संशोधन को देखो, तो मैं डॉन करना चाहते हैं चाहिए वास्तव में इस समाधान की तरह नहीं है।
मैं आकार या Git के प्रदर्शन के साथ किसी भी परेशानी हो रही नहीं कर रहा हूँ, यह सिर्फ 'Git जीयूआई' कि मुझे पूछ डेटाबेस को संपीड़ित करने पर जोर देता है, तब भी जब डेटाबेस को संपीड़ित करने का कोई प्रभाव नहीं होता है।
मूल जवाब:
की "git gc
" सभी ढीली वस्तुओं नहीं निकालना समस्या से पहले (देर से 2008, ""git gc
" doesn't seem to remove loose objects any more" बताया गया है
git gc
केवल ढीली को हटा दो सप्ताह से अधिक पुरानी वस्तुएं, यदि आप वास्तव में उन्हें अभी हटाना चाहते हैं, तो गिट प्रून चलाएं।
लेकिन बनाना सुनिश्चित करें कि जब आप इसे चलाते हैं तो कोई अन्य गिट प्रक्रिया सक्रिय नहीं हो सकती है, या संभवतः यह कुछ पर चरणबद्ध हो सकती है।
"git gc
" अनपैक ऑब्जेक्ट्स जो पहुंचने योग्य नहीं हैं और वर्तमान में पैक में हैं।
नतीजतन, एक Git भंडार द्वारा इस्तेमाल किया डिस्क स्थान की मात्रा वास्तव में जा सकते हैं अप नाटकीय रूप से एक "git gc
" ऑपरेशन है, जो जो अपने फाइल सिस्टम पर पूर्ण के पास चल रहा है किसी के लिए आश्चर्य की बात हो सकता है के बाद, की एक संख्या को हटा देता है एक ट्रैकिंग भंडार से शाखाएं, और फिर एक "git gc
" बहुत अप्रिय आश्चर्य हो सकती है।
[
उदाहरण: ]
पुरानी शाखाएं next-20081204
जैसे टैग के माध्यम से आरक्षित हैं।
आप हर दिन linux-next
भंडार के अपने स्थानीय प्रतिलिपि को अपडेट करते हैं, तो आप इन पुराने शाखा टैग की एक बड़ी संख्या एकत्र होंगे।
आप तो उनमें से एक पूरी श्रृंखला को नष्ट, और git-gc
चलाते हैं, आपरेशन काफी देर, और ब्लॉक और काफी बड़ा हो जाएगा इस्तेमाल किया inodes की संख्या का समय लगेगा।
वे एक "git prune
" के बाद गायब हो जाते हैं, लेकिन जब मैं इस गृह व्यवस्था संचालन करते हैं, मैं अक्सर एक --yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repository
विकल्प "Git जीसी" करने के लिए कामना की है।
तो आपके मामले में, "git prune
" सहायक होगा?
(संभवतः का उपयोग कर "अब" gc.pruneexpire
config चर में, जरूरत से ऊपर व्यवहार होने की के साथ)।
तुम भी (एक ही धागे से) है:
repack -a -d -l
सूचना लोअरकेस 'एक'।
git-gc
अपरकेस 'ए' के साथ दोबारा कॉल करता है जो पहुंचने योग्य वस्तुओं को अनपॅक करने का कारण बनता है। लिटिल 'ए', उन लोगों के लिए है जो जानते हैं कि वे क्या कर रहे हैं, और गिट को केवल पहुंचने योग्य वस्तुओं को छोड़ना चाहते हैं।
यह संवाद "फीचर" का एक बड़ा उदाहरण है कि कई लोग चाहते हैं कि यह अस्तित्व में न हो । यह केवल कष्टप्रद नहीं है, यह महत्वपूर्ण कामों को मिटा सकता है जो हार्ड रीसेट के बाद अलग हो गए। – adelriosantiago