2015-12-09 5 views
6

मैंने अभी एक नया संग्रह बनाया है और प्रारंभिक प्रतिबद्धता बनाई है।मेरी गिट भंडार क्यों कामकाजी निर्देशिका से बहुत बड़ी है?

कार्य निर्देशिका 2 जीबी है। लेकिन .git निर्देशिका एक विशाल 15 जीबी है।

गिट रिपोजिटरी, केवल एक ही प्रतिबद्धता के साथ, कार्यशील निर्देशिका के रूप में लगभग 8 गुना बड़ा क्यों है?

क्या मैं कुछ गलत कर रहा हूं? क्या इसको ठीक करने का कोई तरीका है?

+1

'गीट जीसी' चलाने का प्रयास करें (यह देखने के लिए 'git gc --help' चलाएं)। मैं इसे एक उत्तर के रूप में पोस्ट नहीं कर रहा हूं क्योंकि मुझे नहीं पता कि आपका रेपो पहले स्थान पर इतना बड़ा क्यों है, लेकिन 'git gc' * * मदद कर सकता है। –

+0

यह वास्तव में अजीब है। क्या आपने शायद स्टेजिंग क्षेत्र में कुछ फाइलें जोड़ दी हैं लेकिन प्रतिबद्ध करने से पहले उन्हें हटा दिया है? – Nayuki

+0

आपने यह नया संग्रह कैसे बनाया? ऐसा लगता है कि आपके पास कुछ इतिहास संग्रहीत किया जा रहा है। महत्वपूर्ण: क्या आपने 'गिट क्लोन' या 'गिट इनिट' का उपयोग किया था? –

उत्तर

7

बड़ा भंडार आकार इसलिए है क्योंकि आपने अस्थायी रूप से ".hg" उपनिर्देशिका की सामग्री को जोड़ा है, लेकिन वास्तविक प्रारंभिक प्रतिबद्धता में डेटा का उपयोग नहीं किया है। के का पता लगाने के क्या चरण दर चरण हुआ करते हैं:

  1. git init: मेटाडाटा एक छोटा-सा के साथ एक ".git" उपनिर्देशिका बनाता है।

  2. git add .: यह Git के सूचकांक (यानी मचान क्षेत्र) में काम कर पेड़ के सभी की नकल की - दूसरे शब्दों में सभी फाइलों को अपनी परियोजना में, ".hg" निर्देशिका फ़ाइलों के सभी शामिल हैं। जब हम कहते हैं कि इन्हें इंडेक्स में जोड़ा गया है, तो इसका मतलब है कि सभी फाइल सामग्री ऑब्जेक्ट स्टोरेज डेटाबेस में ".git/ऑब्जेक्ट्स" में जोड़ दी गई है, और ".git/index" फ़ाइल में सभी फाइलों के पॉइंटर्स हैं।

  3. git reset .hg: इसने इंडेक्स से ".hg" उपनिर्देशिका को हटा दिया। लेकिन भंडारण में जोड़े गए ऑब्जेक्ट्स को हटाया नहीं गया है, क्योंकि अन्य काम करता है या इंडेक्स प्रविष्टियां ने उन्हें इंगित किया है। (Git वर्तमान में ट्रैक नहीं है कि कितने संदर्भ किसी ऑब्जेक्ट को इंगित यह कचरा संग्रहण का पता लगाने के साथ चल रही है, उनकी गिनती का संदर्भ नहीं।।)

  4. git commit: यह आखिरी आदेश आप प्रदर्शन किया है, जो एक नया में सूचकांक की नकल की है प्रतिबद्ध और भंडार में संग्रहीत किया।

आपकी समस्या का समाधान करने के लिए:

  • आप पहली जगह में फ़ाइल बचते हैं कर सकते हैं अगर आप एक खाली भंडार के साथ शुरू और केवल उन्हीं फ़ाइलों को तुम्हारी जरूरत है जोड़ने के लिए, ध्यान से छोड़कर "। एचजी "।

  • यदि आप इस तथ्य के बाद समस्या को ठीक करना चाहते हैं, तो आप git gc चला सकते हैं और आशा करते हैं कि अप्रयुक्त वस्तुओं को हटा दिया जाएगा।

+1

समस्या को हल करने के लिए मैंने जिस समाधान का उपयोग किया, वह फाइल: // प्रोटोकॉल का उपयोग करके भंडार को क्लोन करना था। – PortMan

संबंधित मुद्दे