मैं अपने GitHub खाते पर एक भंडार पर काम कर रहा था और यह एक ऐसी समस्या है जिस पर मैं लड़खड़ा गया।
- Node.js कुछ npm संकुल अधिष्ठापित फ़ोल्डर के साथ प्रोजेक्ट करता है
- पैकेज
node_modules
फ़ोल्डर में थे - उस फ़ोल्डर को रिपॉजिटरी में जोड़ा और जीथब को कोड धक्का दिया (उस समय एनपीएम भाग के बारे में नहीं सोच रहा था)
- एहसास हुआ कि आपको कोड का हिस्सा बनने के लिए वास्तव में उस फ़ोल्डर की आवश्यकता नहीं है
- उस फ़ोल्डर को हटा दिया गया, उसे धकेल दिया गया
उस समय, कुल git रेपो का आकार लगभग 6MB था जहां वास्तविक कोड (उस फ़ोल्डर को छोड़कर) लगभग 300 KB था ।
अब मैं अंत में जो खोज रहा हूं, वह पैकेज के इतिहास से उस पैकेज फ़ोल्डर के विवरण से छुटकारा पाने का एक तरीका है, अगर कोई इसे क्लोन करता है, तो उन्हें 6mb के इतिहास को डाउनलोड करने की आवश्यकता नहीं है, जहां केवल वास्तविक फाइलें उन्हें मिल रही हैं अंतिम प्रतिबद्ध के रूप में 300KB होगा।
मैंने इसके लिए संभावित समाधानों को देखा और इन 2 तरीकों को आजमाया
- गिट रिपॉजिटरी (इतिहास) से फाइल निकालें
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Gist ऐसा लगता है कि यह काम किया है जहां स्क्रिप्ट चलाने के बाद, यह पता चला कि यह उस फ़ोल्डर से छुटकारा पा गया और इसके बाद पता चला कि 50 अलग-अलग कमिट संशोधित किए गए थे। लेकिन इसने मुझे उस कोड को आगे बढ़ाने नहीं दिया। जब मैंने इसे धकेलने की कोशिश की, तो यह कहा गया Branch up to date
लेकिन दिखाया गया कि 50 कमिट को ए पर संशोधित किया गया था git status
। अन्य 2 विधियों ने भी मदद नहीं की।
अब भले ही यह दिखाया गया है कि यह उस फ़ोल्डर के इतिहास से छुटकारा दिलाता है, जब मैंने अपने लोकलहोस्ट पर उस रेपो के आकार की जांच की, तब भी यह लगभग 6 एमबी था। (मैंने refs/original
फ़ोल्डर भी हटा दिया है लेकिन रेपो के आकार में परिवर्तन नहीं देखा है)।
मैं जो स्पष्ट करना चाह रहा हूं वह है, अगर न केवल कमिटेड हिस्ट्री से छुटकारा पाने का एक तरीका है (जो कि केवल एक चीज है जो मुझे लगता है कि हुआ है), बल्कि उन फाइलों को भी रख रहा है जो एक रोलबैक करना चाहती है।
कहते हैं कि इसके लिए एक समाधान प्रस्तुत किया गया है और इसे मेरे लोकलहोस्ट पर लागू किया गया है, लेकिन उस गिटहब रेपो के लिए पुन: पेश नहीं किया जा सकता है, क्या यह संभव है कि रेपो, रोलबैक को पहले कमिट करने के लिए ट्रिक करें और इसे पुश करें (या ऐसा नहीं होगा कि गिट होगा अभी भी उन सभी आवागमन का इतिहास है? - उर्फ। 6 एमबी)।
यहां मेरा अंतिम लक्ष्य मूल रूप से फ़ोल्डर सामग्री को गिट से छुटकारा पाने का सबसे अच्छा तरीका है ताकि उपयोगकर्ता को 6MB के लायक सामान डाउनलोड न करना पड़े और फिर भी संभवतः अन्य कमिट्स हों जो कभी भी मॉड्यूल फ़ोल्डर को नहीं छूते हैं (यह सुंदर है उन सभी को) git के इतिहास में।
मैं यह कैसे कर सकता हूँ?