शीर्षक सब कुछ कहता है। कई मामले हैं जहां आप .gitignore फ़ाइल का समस्या निवारण कर रहे होंगे क्योंकि यह अपेक्षा के अनुरूप काम नहीं कर रही है।
.gitignore फ़ाइल Git रिपॉजिटरी में एक महत्वपूर्ण भूमिका निभाती है। यदि आपकी .gitignore फ़ाइल काम नहीं कर रही है, तो आप गलती से उन परिवर्तनों को ट्रैक कर सकते हैं जिन्हें निजी रखा जाना चाहिए। इनमें से कुछ परिवर्तनों में संवेदनशील जानकारी हो सकती है, जैसे API कुंजियाँ।
टूटी हुई .gitignore फ़ाइल के दो कारण हैं:
- कमिट करने के बाद किसी फ़ाइल को .gitignore में जोड़ना।
- अपनी .gitignore फ़ाइल में गलत फ़ाइल नाम या पथ का संदर्भ देना।
हम इस ट्यूटोरियल में इन दोनों मुद्दों पर चर्चा करेंगे और उन्हें कैसे हल करें।
.gitignore फ़ाइल क्या है?
.gitignore फ़ाइल में उन सभी फ़ाइलों की सूची होती है जिन्हें आप अपने Git रिपॉजिटरी में सहेजना नहीं चाहते। इस फ़ाइल का उपयोग अक्सर कॉन्फिगरेशन और एनवायरनमेंट फ़ाइलों को रिपॉजिटरी के बाहर रखने के लिए किया जाता है। इन फ़ाइलों में अक्सर निजी जानकारी होती है और इन्हें किसी भी रिमोट रिपॉजिटरी में नहीं होना चाहिए।
इस फ़ाइल को स्पष्ट रूप से .gitignore नाम से नामित और सहेजा जाना चाहिए। इस प्लेन टेक्स्ट फ़ाइल पर, आप उन फ़ाइलों या डायरेक्टरीज़ के पथ जोड़ेंगे जिन्हें आप Git को ट्रैक नहीं करना चाहते। .gitignore में जो कुछ भी जोड़ा जाता है, Git उसे अनदेखा करेगा और अपने ट्रैकिंग ट्री में नहीं जोड़ेगा।
यहाँ .gitignore फ़ाइल की सामग्री का एक उदाहरण है:
node_modules/ .env
इस फ़ाइल पर हम मूल रूप से Git को एक विशिष्ट फ़ाइल को अनदेखा करने के लिए कह रहे हैं। यह .env फ़ाइल है, जिसमें अक्सर API कुंजियाँ होती हैं। हम node_module फ़ोल्डर को भी अनदेखा कर रहे हैं जिसमें सभी इंस्टॉल किए गए NPM पैकेज होते हैं।
अनदेखा की जाने वाली सामान्य फ़ाइलों में .DS_Store फ़ाइलें, .env फ़ाइलें, और कॉन्फिग फ़ाइलें शामिल हैं। .DS_Store फ़ाइलें अक्सर macOS ऑपरेटिंग सिस्टम पर पाई जाती हैं और Git रिपॉजिटरी का हिस्सा बनने की आवश्यकता नहीं होती।
अधिकांश .gitignore फ़ाइलें रिपॉजिटरी के रूट डायरेक्टरी में रखी जाती हैं। .gitignore फ़ाइलों के बारे में अधिक जानने के लिए, शुरुआती लोगों के लिए हमारे .gitignore फ़ाइल गाइड को देखें।
परिदृश्य A: कमिट करने के बाद फ़ाइल को .gitignore में जोड़ना
हम शिकायत कर सकते हैं कि gitignore काम नहीं कर रहा है क्योंकि हमने गलती से एक फ़ाइल को कमिट कर दिया जिसे अनदेखा किया जाना था। तो हम उसे बाद में gitignore में जोड़ते हैं और शिकायत करते हैं कि Git अभी भी उसे ट्रैक कर रहा है।
इसका कारण यह है कि हमें कमिट करने से पहले फ़ाइलों/फ़ोल्डर्स को जोड़ना होगा। Git पहले से ही उन्हें ट्रैक कर रहा है, इसलिए उन्हें फिर से अनट्रैक करने के लिए, हमें निम्न कमांड करने की आवश्यकता होगी:
git rm -rf --cached <path>
पहला भाग git rm <path> को हटा देता है। --cached फ्लैग निर्दिष्ट करता है कि इसे इंडेक्स से हटा दिया गया है लेकिन यह स्थानीय डायरेक्टरी में रहता है। r डायरेक्टरी पथ दिए जाने पर रिकर्सिव हटाने के लिए है और f इसे फोर्स करता है। यदि आप केवल फ़ाइल के साथ काम कर रहे हैं और फिर भी इसे अपने स्थानीय पर रखना चाहते हैं तो करें:
git rm --cached <file>
तो इसके साथ आप Git को बता रहे हैं कि आप अब प्रदान की गई फ़ाइल/फ़ोल्डर को ट्रैक नहीं करना चाहते। अब फिर से प्रयास करें और आपका gitignore काम करना चाहिए। बस याद रखें कि फ़ाइल/फ़ोल्डर को gitignore के लिए निर्दिष्ट किया जाना चाहिए!
परिदृश्य B: कमिट से पहले .gitignore बनाया गया लेकिन फिर भी फ़ाइल ट्रैक नहीं हो रही
यदि .gitignore अभी भी फ़ाइल को ट्रैक नहीं कर रहा है, तो समाधान उतना ही सरल हो सकता है जितना कि यह जांचना कि आप सही फ़ाइल का संदर्भ दे रहे हैं। आपको ठीक से निर्दिष्ट करना होगा कि आप .gitignore फ़ाइल को किन फ़ाइलों को अनदेखा करना चाहते हैं। किसी भी वर्तनी त्रुटि या गलत पथ नाम को मैन्युअल रूप से आपके द्वारा ठीक करने की आवश्यकता है।
इस उदाहरण पर विचार करें:
*.pyyc
.gitignore फ़ाइल Git को बताती है कि किन फ़ाइलों को अनदेखा करना है, जो इस मामले में सभी .pyyc फ़ाइलें हैं। लेकिन, हमारा इरादा .pyc फ़ाइलों को अनदेखा करना है। .pyc फ़ाइलें Python प्रोग्राम के लिए कॉन्फिगरेशन फ़ाइलें हैं। हमारी .gitignore फ़ाइल यह नहीं जानती इसलिए हमें अपने नियम को ठीक करने की आवश्यकता है:
*.pyc
हमारा रिपॉजिटरी अब सभी .pyc फ़ाइलों को अनदेखा करेगा।
यह भी जांचें कि फ़ाइल/फ़ोल्डर घोषणा के शुरुआत या अंत में कोई ट्रेलिंग स्पेस तो नहीं है।
निष्कर्ष
हमने कुछ परिदृश्यों और संभावनाओं पर चर्चा की और विभिन्न मामलों के लिए समाधान जब gitignore अपेक्षा के अनुरूप काम नहीं कर रहा था। मुख्य निष्कर्ष यह है कि आपको यह समझना होगा कि फ़ाइलें/डायरेक्टरीज़ कहाँ स्थित हैं ताकि आप सही पथ जोड़ सकें।
आपको पता होना चाहिए कि आपको जितनी जल्दी हो सके अनदेखा की जाने वाली किसी भी फ़ाइल को जोड़ना चाहिए। यदि आप गलती से इसे कमिट कर देते हैं, तो सौभाग्य से हमारे पास git rm -rf --cached <path> है। यह कमांड फ़ाइल को Git वर्कफ्लो से बाहर निकाल देगी। फिर, आप इसे gitignore में जोड़ सकते हैं ताकि आपकी फ़ाइल अनदेखी हो जाए।
अंतिम नोट: ऐसे अन्य मामले हो सकते हैं जहां git reset उपयोगी हो। मैंने git reset के बारे में एक लेख लिखा है जो इन मामलों में उपयोगी होगा। तो Git reset पूर्ववत करने जैसा होगा, समय में पीछे जाना, इसलिए कुछ मामलों में यही आप चाहते हैं।
क्या आप Git के बारे में अधिक सीखना चाहते हैं? हमारा How to Learn Git गाइड पढ़ें। इस गाइड में आपको Git सीखने पर विशेषज्ञ सलाह और शीर्ष शिक्षण संसाधनों पर मार्गदर्शन मिलेगा।