अध्याय ४ · खण्ड II · 28 मिनेट
Git र GitHub: काम बचाउने र साझा गर्ने
Git ले काम गर्दै जाँदा परियोजनाका स्न्यापसट लिन, गल्ती उल्ट्याउन, र सहकार्य गर्न दिन्छ। GitHub ले ती स्न्यापसटलाई अनलाइन राख्छ — तपाईंको कोड कतै सुरक्षित बस्छ, र अरूले देख्न पाउँछन्।
Git प्रयोग गर्ने दुई कारण छन्, र तीमध्ये एक मात्र सहकार्यको हो। पहिलो कारण — कसैसँग कोड साझा नगर्ने भए पनि सत्य — Git ले परियोजनाको इतिहास बचाउन दिन्छ। हरेक पटक सफा अवस्थामा पुग्दा स्न्यापसट लिनुहोस्। तीन हप्तापछि, प्रयोग बिग्रिँदा, तपाईं कुनै पनि स्न्यापसटमा फर्किएर त्यहाँबाट फेरि सुरु गर्न सक्नुहुन्छ। दोस्रो कारण — उपयोगी, तर गौण — Git र GitHub ले अरूलाई तपाईंको कोड देख्न, प्रतिलिपि लिन, सुझाव दिन दिन्छ। बाँकी ट्र्याकमा, हामी Git लाई सुरक्षा-जालका रूपमा प्रयोग गर्छौँ। पोर्टफोलियोका रूपमा हेर्ने पछि आउँछ।
Git स्थापना
अधिकांश macOS र Linux मेसिनमा पहिले नै Git हुन्छ। जाँच्न:
git --version
संस्करण नम्बर देखियो भने सकियो। “command not found” देखियो भने:
- macOS:
brew install git, वा सोधिँदा Xcode Command Line Tools स्थापना गर्नुहोस्। - Windows:
git-scm.comबाट डाउनलोड गर्नुहोस् — स्थापनाका बेला पूर्वनिर्धारित स्वीकार गर्नुहोस्। - Linux:
sudo apt install git(वा वितरणको समकक्ष)।
अनि Git लाई तपाईं को हुनुहुन्छ भन्नुहोस्। हरेक मेसिनमा एक पटक, सधैंका लागि:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
इमेल तपाईंले गर्ने हरेक कमिटमा देखिनेछ। वास्तविक प्रयोग गर्नुहोस् — आदर्श रूपमा GitHub मा प्रयोग गर्ने उहीँ।
लगभग सबै काम गर्ने तीन आदेश
दैनिक Git काम तीन आदेशले गर्छ। परियोजना फोल्डरभित्रबाट:
git init # यो फोल्डरलाई Git परियोजना बनाउनुहोस् (एक पटक, सधैंका लागि)
git add . # अर्को स्न्यापसटका लागि वर्तमान फाइलहरू स्टेज गर्नुहोस्
git commit -m "..." # सानो सन्देशसहित स्न्यापसट लिनुहोस्
बस्, यो पूरै चक्र हो। परिवर्तन गर्नुहोस्, git add ., git commit -m "बदलिएको कुरा बताउनुहोस्"। दोहोर्याउनुहोस्। तपाईंको परियोजनाको इतिहास भयो।
इतिहास हेर्न:
git log
अन्तिम कमिटदेखि के बदलियो हेर्न:
git status # कुन फाइल छोएको
git diff # लाइनदर-लाइन फरक
status र diff तपाईं निरन्तर प्रयोग गर्नुहुनेछ। “खानाअघि म के गरिरहेको थिएँ?” सम्झने सस्तो, छिटो तरिका हुन्।
.gitignore — के नबचाउने
परियोजना फोल्डरका केही कुरा कहिल्यै कमिट गर्नु हुँदैन। पछिल्लो खण्डको भर्चुअल वातावरण (.venv/) स्पष्ट छ — ठूलो, प्लेटफर्म-विशिष्ट, र requirements.txt बाट पुन: निर्माण गर्न मिल्ने। यस्तै क्यास, गोप्य की, र ठूला डाटा फाइलहरूका लागि।
परियोजनाको मूलमा .gitignore नामको फाइल बनाउनुहोस्:
.venv/
__pycache__/
*.pyc
.ipynb_checkpoints/
data/raw/
.env
*.log
Git ले हरेक git add अघि यो फाइल हेर्छ र ढाँचा मिल्ने जुनसुकैलाई मौन छाड्छ। .env फाइल विशेष महत्त्वपूर्ण छ — त्यहाँ तपाईंले अध्याय 5 मा API की राख्नुहुनेछ, र ती सार्वजनिक कमिटमा पुग्नु हुँदैन।
GitHub मा पुश गर्ने
GitHub त्यो वेबसाइट हो जहाँ Git परियोजना बस्छन्। निःशुल्क तह उदार छ — अनगिन्ती सार्वजनिक र निजी रिपोजिटोरी होस्ट गर्न सकिन्छ — र खाता बनाउन एक मिनेट लाग्छ।
github.comमा साइन अप गर्नुहोस्। इमेल प्रमाणित गर्नुहोस्।- “New repository” क्लिक गर्नुहोस्। नाम दिनुहोस् (जस्तै
building-ai-notes)। खाली छोड्नुहोस् (README छैन,.gitignoreछैन — तपाईंसँग पहिले नै छ)। - GitHub ले आदेशहरूको ब्लक देखाउँछ। तपाईंले चाहेका मोटामोटी यिनै हुन्:
git remote add origin git@github.com:yourname/building-ai-notes.git
git branch -M main
git push -u origin main
यदि तपाईंले SSH की सेट गर्नुभयो भने (सिफारिस गरिएको — GitHub सँग एक-पृष्ठ मार्गदर्शिका छ), यो काम गर्छ। HTTPS प्रयोग गर्नुहुन्छ भने, GitHub ले पहिलो पटक व्यक्तिगत पहुँच टोकन माग्छ — सेट गर्न सजिलो तर टाइप गर्न थोरै झमेलापूर्ण। दुवै ठीक।
त्यो पहिलो पुशपछि, दैनिक नित्यकर्म यस्तो हुन्छ:
git add .
git commit -m "तपाईंले के गर्नुभयो वर्णन गर्नुहोस्"
git push
तपाईंको काम अब GitHub मा छ। यदि तपाईंको ल्यापटप बिग्रन्छ भने पनि काम बच्छ। साथीले देख्न चाहन्छ भने, URL पठाउनुहोस्।
पुलिङ, ब्रान्चिङ, र अहिलेलाई छाड्ने भागहरू
Git मा धेरै बढी छ — branch, merge, rebase, pull, fetch, cherry-pick — र तपाईं आवश्यक हुँदै सिक्नुहुनेछ। Course 01 का लागि माथिका तीन आदेश (add, commit, push) ले लगभग सबै ओगट्छन्। ब्रान्चिङ सहकार्य सुरु गरेपछि उपयोगी हुन्छ; हामी Course 05 मा वास्तविक एप पठाउँदा फर्किनेछौँ।
एउटा आदेश छिटो चाहिन सक्छ: दुई मेसिनमा काम गर्नुहुन्छ भने, कहिलेकाहीं अर्कोबाट पुश गरेका परिवर्तन तानेर ल्याउनुपर्छ:
git pull
त्यसले GitHub मा भएका तर स्थानीयमा नभएका कुनै पनि परिवर्तन ल्याउँछ र मर्ज गर्छ। यदि तपाईंले एउटा मेसिनमा एक्लै काम गर्नुहुन्छ भने, हप्तौं प्रयोग नगर्न सक्नुहुन्छ।
कमिट सन्देश: एउटा सानो शिल्प
हरेक कमिटसँग टाइप गर्ने एकल सन्देश तपाईंको परियोजनाको दैनिकीको सानो टुक्रा हुन्छ। राम्रा सन्देशले पछि वास्तविक समय बचाउँछन्।
खराब:
fixed stuff
asdf
update
राम्रो:
Add NEPSE CSV reader and unit conversion to NPR lakhs
Fix off-by-one in vendor totals
Switch matplotlib output dpi from 100 to 200
काम गर्ने आकार: छोटो आदेशात्मक वाक्यांश (“X थप्नुहोस्”, “Y सुधार्नुहोस्”, “A बाट B मा सर्नुहोस्”)। भूतकालमा पढ्नुहोस् (“लागू भएमा यो कमिटले X थप्नेछ”)। एक लाइन प्रायः पर्याप्त; बढी चाहिए, खाली लाइन छाडेर लामो बडी लेख्नुहोस्।
सानै तर वास्तविक प्रवाह, सुरुदेखि अन्त्यसम्म
मिलाएर। शून्यबाट GitHub सम्म, नयाँ परियोजना:
mkdir nepse-alerts
cd nepse-alerts
python3 -m venv .venv
source .venv/bin/activate
pip install pandas requests
pip freeze > requirements.txt
git init
# .venv/, __pycache__/, .env, आदिसहित .gitignore बनाउनुहोस्
# केही कोड लेख्नुहोस्...
git add .
git commit -m "Initial NEPSE alerts script and dependencies"
# github.com मा: खाली रिपो "nepse-alerts" बनाउनुहोस्
git remote add origin git@github.com:yourname/nepse-alerts.git
git branch -M main
git push -u origin main
दस आदेश। पहिलो पटक पन्ध्र मिनेट, बानी परेपछि पाँच मिनेट। यहाँदेखि अघि, यो ट्र्याकमा तपाईंले सुरु गर्ने हरेक परियोजनाले यो आकार पछ्याउँछ।
आफ्नो बुझाइ जाँच्नुहोस्
Quick check
—तीन दिनअघि तपाईंले Anthropic API की भएको `.env` फाइल कमिट गरेर सार्वजनिक GitHub रिपोजिटोरीमा पुश गर्नुभयो। आज मात्र गल्ती बुझ्नुहुन्छ। तपाईंको अवस्थाको सबैभन्दा सही विवरण के हो?
Quick check
—हेटौंडाकी एक साथीले नियमित कमिट गर्छिन् सन्देशसहित जस्तै `update`, `more update`, `final`, `final v2`। छ महिनापछि, उनलाई pandas फिल्टरिङ थपिएको कमिट खोज्नुपर्छ। यो खण्डबाट व्यवहारिक सल्लाह के हो?
अब के आउँछ
तपाईं काम बचाउन र साझा गर्न जान्नुहुन्छ। यो अध्यायको अन्तिम बानी औजार होइन — मानसिकता हो। कार्यक्रमहरू बिग्रन्छन्। प्रोडक्सनमा बिग्रनुअघि सम्पादकमा बिग्रन्छन्। बिग्रिएको कार्यक्रमलाई त्रासले नभई शान्तिले पढ्ने सीप घण्टौं अल्झने निर्माता र मिनेटमा फर्किने निर्माताबीचको फरक हो। त्यो अर्को खण्ड हो।