फाइलों को अनदेखा करना और अच्छी आदतें


आप weather-app नाम का एक प्रोजेक्ट क्लोन करते हैं, npm install चलाते हैं, और अपने नए रेपो की स्थिति देखते हैं।
$ git status
Untracked files:
(use "git add <file>..." to include in what will be committed)
node_modules/
dist/
.envतीन फोल्डर और फाइलें अनट्रैक्ड के रूप में दिखाई देते हैं, और उनमें से कोई भी कमिट में नहीं होना चाहिए। node_modules/ हजारों फाइलें हैं जो npm install सेकंड में package.json से दोबारा जेनरेट करता है। dist/ बिल्ड आउटपुट है जो हर बार आपके सोर्स से दोबारा बनाया जाता है। और .env एक API कुंजी रखता है। इनमें से कोई भी आपके प्रोजेक्ट के इतिहास में कभी नहीं आना चाहिए, और बिना सोचे-समझे git add . टाइप करना ही है कि यह वैसे भी कैसे होता है।
Git को बताएं कि क्या अनदेखा करना है
एक .gitignore फाइल फाइलों और फोल्डरों के पैटर्न को सूचीबद्ध करती है जिन्हें Git को कभी ट्रैक नहीं करना चाहिए। आप इसे अपने प्रोजेक्ट की रूट में एक बार बनाते हैं, वह स्थान जहां आपने आपका पहला रेपोजिटरी में git init चलाया था, और उसके बाद, git status और git add . चुप्पी से कुछ भी स्किप कर देते हैं जो मेल खाता है।
# .gitignore
node_modules/
dist/
.envहर पंक्ति एक पैटर्न है: dist/ जैसा एक सादा फोल्डर नाम उस पूरे फोल्डर को अनदेखा करता है, जहां भी यह प्रोजेक्ट में दिखाई दे। .gitignore फाइल को स्वयं कमिट करें। यह छोटी है, यह उन सभी के लिए उपयोगी है जो प्रोजेक्ट को क्लोन करते हैं, और यह आपके सोर्स कोड की तरह इतिहास में है।
$ git status
On branch main
nothing to commit, working tree cleanपैटर्न के साथ, git status चुप हो जाता है। यह बिल्कुल सही है: जिन फोल्डरों और फाइलों को आप कभी कमिट नहीं करना चाहते वे शोर के रूप में दिखाई नहीं देते, इसलिए जो चीजें दिखाई देती हैं वे वास्तव में महत्वपूर्ण हैं।
.gitignore फाइल सूचीबद्ध करती है कि Git को कभी ट्रैक नहीं करना चाहिए: node_modules/, dist/, और .env लगभग किसी भी प्रोजेक्ट में सामान्य संदिग्ध हैं। .gitignore फाइल को स्वयं कमिट करें ताकि जो कोई भी प्रोजेक्ट को क्लोन करता है उसे समान स्वच्छ स्थिति मिले। मैंने इसे सीखने से पहले एक पूरा दोपहर बर्बाद कर दिया था दुर्घटना से हजारों डिपेंडेंसी फाइलों को स्टेजिंग करते हुए। कभी भी सीक्रेट्स कमिट न करें
एक API कुंजी, एक डेटाबेस पासवर्ड, या एक हस्ताक्षर प्रमाणपत्र कभी भी कमिट में दिखाई नहीं देना चाहिए। यह एक निजी रेपोजिटरी के लिए उतना ही मजबूती से रहता है जितना कि सार्वजनिक एक के लिए, और यह पहले कमिट से शुरू होता है। सीक्रेट्स को .env जैसी फाइल में रखें, उस फाइल को .gitignore पर दिन एक पर जोड़ें, और मानों को अपने ऐप में से लोड करें उन्हें अपनी सोर्स फाइलों में लिखने के बजाय।
# .env
WEATHER_API_KEY=sk_live_9f8e7d6c5b4a# .gitignore
.envइस नियम का अनुसरण करें स्वचालित रूप से, हर बार, कोई अपवाद नहीं। एक कमिट में बैठी कुंजी रेपोजिटरी तक पहुंच वाले किसी के द्वारा पहुंचने योग्य है, और एक सार्वजनिक रेपोजिटरी पर, सभी के द्वारा।
.env जैसी फाइल में रखें और .env को अपने .gitignore में जोड़ें उससे पहले कि आप कभी git add चलाएं। यह पूरे अध्याय में एक नियम है जिसे पूर्ण के रूप में मानने योग्य है। ट्रैक किए जाने के बाद .gitignore में एक फाइल जोड़ना
यह वह ट्रिप-अप है जो लगभग हर किसी को कम से कम एक बार पकड़ता है। आप दुर्घटना से एक फाइल कमिट करते हैं, अपनी गलती का एहसास करते हैं, इसे .gitignore में जोड़ते हैं (नीचे echo पंक्ति उस पथ को उस फाइल में जोड़ता है), और उम्मीद करते हैं कि Git इसे भूल जाए। वह नहीं करता।
$ git add config/settings.json
$ git commit -m "Add app settings"
# बाद में, आपको एहसास होता है कि यह एक गलती थी
$ echo "config/settings.json" >> .gitignore
$ git status
On branch main
nothing to commit, working tree cleangit status एक स्वच्छ ट्री दिखाता है, लेकिन config/settings.json अभी भी ट्रैक किया जाता है और अभी भी हर भविष्य git log और हर क्लोन में दिखाई देता है। अनदेखा नियम केवल उन फाइलों पर लागू होते हैं जिन्हें Git पहले से नहीं जानता। एक बार जब कोई फाइल जोड़ी जाती है और कमिट की जाती है, तो यह आपके इतिहास का हिस्सा होता है, और .gitignore के पास उस इतिहास में पहले से मौजूद फाइलों के बारे में कोई विचार नहीं है।
इसे वास्तव में आगे बढ़ते हुए ट्रैक करना बंद करने के लिए, Git को यह बताएं कि फाइल को ड्रॉप कर दे जो यह अपनी डिस्क पर फाइल को छोड़ते हुए अनुसरण करता है:
$ git rm --cached config/settings.json
$ git commit -m "Stop tracking config/settings.json"git rm --cached <file> Git के ट्रैकिंग से फाइल को हटाता है आपकी कार्यशील निर्देशिका से हटाए बिना। उस हटाने को कमिट करें, और उस बिंदु से आपका .gitignore पैटर्न वह काम करता है जो आप शुरुआत से ही चाहते थे।
.gitignore में एक फाइल जोड़ना उसके बाद Git पहले से ट्रैक करता है वह उस फाइल के साथ कुछ नहीं करता है। अनदेखा नियम केवल उन फाइलों पर लागू होते हैं जिन्हें Git ने कभी भी नहीं जोड़ा। एक फाइल को ट्रैक करना बंद करने के लिए जो दुर्घटना से फिसल गई हो, git rm --cached <file> चलाएं और उस परिवर्तन को कमिट करें। अच्छी आदतें: छोटे कमिट्स और एक स्वच्छ रेपो
एक साफ-सुथरा .gitignore रेपोजिटरी में रहने योग्य रखने का एक आधा है। दूसरा आधा यह है कि आप अपने कमिट्स को कैसे आकार देते हैं। प्रत्येक कमिट को एक केंद्रित परिवर्तन बनाएं: एक बग फिक्स, एक छोटी सी सुविधा, एक एकल रिफ़ैक्टर। अगर एक दोपहर का काम कई असंबंधित चीज़ों को छूता है, तो इसे एक ही दिन के अंत में सब कुछ गिराने के बजाय कई कमिट्स में विभाजित करें।
$ git add src/weather-widget.js
$ git commit -m "Fix temperature rounding in weather widget"छोटे कमिट्स की समीक्षा करना आसान है, अगर कुछ टूटता है तो रिवर्ट करना आसान है, और छह महीने बाद पढ़ना आसान है जब आप यह याद करने की कोशिश कर रहे हों कि एक पंक्ति कोड क्यों मौजूद है। कमिट लूप कवर करता है कि एक कमिट संदेश उपयोगी क्या बनाता है; यह आदत परिवर्तन को स्वयं छोटा रखने के बारे में है ताकि एक अच्छा संदेश लिखना संभव हो।
.gitignore को फोल्डरों और सीक्रेट्स को कवर करते हुए रखें जिन्हें कभी ट्रैक नहीं किया जाना चाहिए। वे दो आदतें एक साथ ज्यादातर यह हैं कि एक रेपोजिटरी में काम करना सुखद क्या बनाता है। छोटी आदतें, जल्दी बनाई गई, आपको बाद में बहुत सफाई बचाती हैं। 
