ailiteracynepal 🇳🇵
पाठ आकार

अध्याय ४ · खण्ड 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 परियोजना बस्छन्। निःशुल्क तह उदार छ — अनगिन्ती सार्वजनिक र निजी रिपोजिटोरी होस्ट गर्न सकिन्छ — र खाता बनाउन एक मिनेट लाग्छ।

  1. github.com मा साइन अप गर्नुहोस्। इमेल प्रमाणित गर्नुहोस्।
  2. “New repository” क्लिक गर्नुहोस्। नाम दिनुहोस् (जस्तै building-ai-notes)। खाली छोड्नुहोस् (README छैन, .gitignore छैन — तपाईंसँग पहिले नै छ)।
  3. 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 फिल्टरिङ थपिएको कमिट खोज्नुपर्छ। यो खण्डबाट व्यवहारिक सल्लाह के हो?

अब के आउँछ

तपाईं काम बचाउन र साझा गर्न जान्नुहुन्छ। यो अध्यायको अन्तिम बानी औजार होइन — मानसिकता हो। कार्यक्रमहरू बिग्रन्छन्। प्रोडक्सनमा बिग्रनुअघि सम्पादकमा बिग्रन्छन्। बिग्रिएको कार्यक्रमलाई त्रासले नभई शान्तिले पढ्ने सीप घण्टौं अल्झने निर्माता र मिनेटमा फर्किने निर्माताबीचको फरक हो। त्यो अर्को खण्ड हो।