Git Introduction
Git কী, Version Control কী, কেন দরকার — বাংলায় সম্পূর্ণ পরিচিতি।
Git হলো একটি Distributed Version Control System (DVCS)। এটি ফাইলের সব পরিবর্তনের ইতিহাস সংরক্ষণ করে, যাতে যেকোনো সময় পুরোনো অবস্থায় ফিরে যাওয়া যায় এবং একাধিক মানুষ একসাথে কাজ করতে পারে।
Version Control কী?
Version Control মানে হলো ফাইলের পরিবর্তনের খতিয়ান রাখা। আপনি যখনই একটি ফাইল পরিবর্তন করেন, VCS সেই পরিবর্তন সেভ করে — কে, কখন, কী পরিবর্তন করেছে। কোনো ভুল হলে সহজে আগের সংস্করণে ফিরে যাওয়া যায়।
Git-Like টুল ছাড়া যেভাবে কাজ হয়
final_v2_final_2.docx— এমন নামে ফাইল বানাতে হয়- বড় ভুল করলে পুরো প্রজেক্ট নষ্ট
- দুইজন একই ফাইলে কাজ করলে পরিবর্তন ভুলে যাওয়া
- কোন পরিবর্তন কে করেছে, বোঝার উপায় নেই
- পুরোনো কোনো কোডের সমস্যা হলে ফিরে যাওয়ার উপায় নেই
Git কীভাবে সমস্যার সমাধান করে?
- ইতিহাস — প্রতিটি পরিবর্তন commit আকারে সেভ হয়
- রিভার্ট — যেকোনো commit-এ ফিরে যাওয়া যায়
- ব্রাঞ্চ — মূল ফাইলে না খাটিয়ে পাশাপাশি কাজ করা যায়
- মার্জ — ব্রাঞ্চের কাজ সহজে মূল কোডে যোগ করা যায়
- সহযোগিতা — একাধিক ডেভেলপার একসাথে কাজ করে
- টিমওয়ার্ক ট্রেস — কে কী করল, সব লিখিত থাকে
Centralized vs Distributed VCS
| বৈশিষ্ট্য | Centralized (SVN) | Distributed (Git) |
|---|---|---|
| রিপোজিটরির কপি | একটি central server | প্রতিটি ডেভেলপারের কাছে full copy |
| ইন্টারনেট ছাড়া কাজ | কঠিন | সম্ভব (স্থানীয়ভাবে commit) |
| গতি | network-এর উপর নির্ভরশীল | স্থানীয়ভাবে দ্রুত |
| সার্ভার খারাপ হলে | সব হারিয়ে যায় | যেকোনো কপি থেকে restore |
| কাজের ধরণ | চেইন অবডিসেন্স | বিকেন্দ্রীভূত, parallel |
Git-এর মূল ধারণা
- Repository — প্রজেক্টের সব ফাইল ও ইতিহাস রাখার জায়গা
- Commit — একটি নির্দিষ্ট সময়ের পরিবর্তনের স্ন্যাপশট
- Branch — মূল কোড থেকে আলাদা লাইন
- Staging Area — commit করার আগে ফাইল জমা রাখার জায়গা
- Remote — GitHub-এর মতো দূরের রিপোজিটরি
- Working Directory — আপনি যে ফোল্ডারে কাজ করছেন
Git কীভাবে কাজ করে?
Git আপনার ফাইলের প্রতিটি সংস্করণকে একটি snapshot হিসেবে ধরে রাখে। প্রতিটি commit একটি SHA-1 হ্যাশ (৪০ অক্ষরের ইউনিক কোড) দিয়ে চিহ্নিত হয়। Git-এর internal data structure হলো একটি directed acyclic graph (DAG)।
$ git log --oneline
a1b2c3d feat: login page যোগ করা হয়েছে
e4f5g6h fix: navbar responsive
i7j8k9l init: প্রজেক্ট শুরুপ্রতিটি commit-এ parent এর রেফারেন্স থাকে, ফলে পুরো ইতিহাস একটা শিকলের মতো সাজানো থাকে।
Git-এর উপকারিতা
- নির্ভরতা — লোকালে সব তথ্য সেভ থাকে
- গতি — প্রায় সব অপারেশন স্থানীয়ভাবে হয়
- নিরাপত্তা — প্রতিটি commit-এ checksum থাকে, মিথ্যা পরিবর্তন ধরা পড়ে
- নমনীয়তা — ছোট-বড় সব প্রজেক্টের জন্য উপযুক্ত
- মুক্ত ও বিনামূল্যে — open source
- সর্বাধিক জনপ্রিয় — সারা বিশ্বে স্ট্যান্ডার্ড টুল
Git হলো টুল, আর GitHub হলো Git-ভিত্তিক অনলাইন সাইট। Git আপনার কম্পিউটারে চলে; GitHub-এ সেই রিপোজিটরি দূর থেকে সংরক্ষণ ও শেয়ার করা হয়। পরের অধ্যায়ে GitHub নিয়ে আলোচনা হবে।