Git مخزن — پروجیکٹ کے سورس کوڈ کا ذخیرہ ہے جس میں Git ڈویلپمنٹ کے دوران فائلوں کی ہر تبدیلی کو ٹریک کرتا ہے۔ مخزن میں کمٹ، برانچ اور ٹیگ کی مکمل تاریخ ہوتی ہے، جس سے ڈویلپرز کوڈ پر مل کر کام کر سکتے ہیں۔ Git, 2024 کے مطابق، مخزن کسی بھی ورژن کنٹرول سسٹم کی بنیاد ہے اور دنیا بھر کے لاکھوں پروجیکٹس میں استعمال ہوتا ہے۔
اہم نکات
Git مخزن — ایک ڈیٹا ڈھانچہ ہے جس میں ورژن کنٹرول سسٹم پروجیکٹ فائلوں کی تبدیلیوں کی تاریخ بیان کرنے والے میٹا ڈیٹا اور آبجیکٹ محفوظ کرتا ہے۔ جب ڈویلپر git init کمانڈ سے مخزن کو ابتدائی شکل دیتا ہے، Git پروجیکٹ روٹ میں ایک پوشیدہ فولڈر .git بناتا ہے۔
اس فولڈر کے اندر سسٹم کے کام کرنے کے لیے ضروری تمام آبجیکٹ، حوالہ جات اور کنفیگریشن فائلیں ہوتی ہیں۔ مخزن کسی خاص مقام سے منسلک نہیں ہوتا — ڈویلپر اسے مقامی طور پر بنا سکتا ہے اور پھر کسی دور دراز سرور سے منسلک کر سکتا ہے۔
Git تقسیم شدہ مخزن ماڈل استعمال کرتا ہے: پروجیکٹ کا ہر رکن اپنے کمپیوٹر پر تاریخ کی مکمل کاپی رکھتا ہے۔ اس کا مطلب ہے کہ زیادہ تر کارروائیاں — کمٹ، تاریخ دیکھنا، برانچ بنانا — سرور سے رابطہ کیے بغیر مقامی طور پر انجام دی جاتی ہیں۔
Git دستاویزات کے مطابق، تقسیم شدہ فن تعمیر سسٹم کو خرابیوں کے خلاف مزاحم بناتا ہے: اگر سرور ڈاؤن ہو جائے، کوئی بھی مقامی مخزن پروجیکٹ کی مکمل تاریخ بحال کرنے کا ذریعہ بن سکتا ہے۔
مقامی مخزن — ڈویلپر کے کمپیوٹر پر پروجیکٹ کی کاپی ہے۔ اس میں کمٹ، برانچ اور ٹیگ کی مکمل تاریخ ہوتی ہے اور نیٹ ورک کنکشن کے بغیر commit، branch، merge اور rebase کارروائیاں کرنے دیتا ہے۔
دور دراز مخزن — سرور پر میزبانی کی جاتی ہے اور ٹیم کے تمام اراکین کے لیے مطابقت پذیری کے نقطہ کے طور پر کام کرتی ہے۔ ڈویلپر git push کمانڈ سے اپنی تبدیلیاں بھیجتے ہیں اور git pull کمانڈ سے دوسروں کی تبدیلیاں لیتے ہیں۔
مقامی اور دور دراز مخزن کے درمیان کنکشن remote origin — Git کنفیگریشن میں محفوظ سرور URL — کے ذریعے ترتیب دیا جاتا ہے۔ ایک مقامی مخزن کئی دور دراز مخازن سے منسلک ہو سکتا ہے، جو فورک کے ساتھ کام کرتے وقت مفید ہے۔
اس ماڈل کا بنیادی فائدہ یہ ہے کہ ڈویلپر آف لائن موڈ میں کوڈ پر کام کر سکتا ہے اور صرف نتیجہ بھیجنے کے لیے تیار ہونے پر تبدیلیاں مطابقت پذیر کر سکتا ہے۔
| خصوصیت | مقامی | دور دراز |
|---|---|---|
| مقام | ڈویلپر کے کمپیوٹر پر | سرور پر (GitHub, GitLab) |
| نیٹ ورک کے بغیر رسائی | تمام کارروائیوں تک مکمل رسائی | کنکشن کے بغیر دستیاب نہیں |
| مطابقت پذیری | دور دراز کے ساتھ Push/Pull | مقامی سے push وصول کرتا ہے |
| بیک اپ | ڈیٹا کے نقصان سے محفوظ نہیں | بیک اپ کے ساتھ سرور پر محفوظ |
Git کا ذخیرہ کرنے کا ماڈل دوسرے ورژن کنٹرول سسٹم سے بنیادی طور پر مختلف ہے۔ ورژنز کے درمیان تبدیلیوں کی فہرست (ڈیلٹا) محفوظ کرنے کے بجائے، Git ہر کمٹ کے وقت پروجیکٹ کی تمام فائلوں کے مکمل سنیپ شاٹ محفوظ کرتا ہے۔
مخزن میں ہر آبجیکٹ ایک منفرد 40 حرفی SHA-1 ہیش سے پہچانا جاتا ہے۔ اگر فائل کا مواد کمٹ کے درمیان تبدیل نہیں ہوا، Git نیا آبجیکٹ نہیں بناتا بلکہ موجودہ کو دوبارہ استعمال کرتا ہے — اس سے جگہ بچتی ہے۔
Git چار قسم کے آبجیکٹ استعمال کرتا ہے: blob (فائل کا مواد)، tree (ڈائریکٹری کی ساخت)، commit (میٹا ڈیٹا کے ساتھ سنیپ شاٹ) اور tag (کمٹ کا نامی حوالہ)۔ تمام آبجیکٹ .git/objects فولڈر میں محفوظ ہوتے ہیں۔
Git Internals کے مطابق، Git کا آبجیکٹ ماڈل ڈیٹا کی سالمیت کو یقینی بناتا ہے: فائل کے مواد میں کوئی بھی تبدیلی نئی ہیش پیدا کرتی ہے، جس سے تاریخ میں بغیر پکڑے تبدیلی کرنا ناممکن ہو جاتا ہے۔
.git فولڈر مخزن کا دل ہے۔ اس کے بغیر Git تبدیلیوں کو ٹریک نہیں کر سکتا، اور ایک عام ڈائریکٹری صرف فائلوں کا ایک مجموعہ رہ جاتی ہے۔ اس فولڈر کی ساخت کو سمجھنا مخزن کے مسائل کی تشخیص میں مدد کرتا ہے۔
HEAD فائل خاص توجہ کی مستحق ہے۔ عام حالت میں اس میں برانچ کا علامتی حوالہ ہوتا ہے، مثال کے طور پر ref: refs/heads/main۔ detached HEAD حالت میں یہ براہ راست کمٹ کی طرف اشارہ کرتا ہے — اس کا مطلب ہے کہ نئے کمٹ کسی بھی برانچ سے منسلک نہیں ہوں گے۔
Git مخزن کے ساتھ کام کرنے میں بنیادی کارروائیوں کا ایک سیٹ شامل ہے جو ڈویلپر روزانہ انجام دیتا ہے۔ ہر کارروائی نئے آبجیکٹ شامل کرکے یا حوالہ جات منتقل کرکے مخزن کی حالت تبدیل کرتی ہے۔
push اور pull کارروائیاں واحد ہیں جن کے لیے دور دراز سرور سے کنکشن کی ضرورت ہے۔ باقی تمام کارروائیاں مکمل طور پر مقامی طور پر انجام دی جاتی ہیں، جو تاریخ کے بڑے حجم میں بھی تیز رفتار کو یقینی بناتی ہیں۔
مخزن میں ہر فائل چار حالتوں سے گزرتی ہے: untracked (ٹریک نہیں کی گئی)، modified(تبدیل شدہ)، staged (تیار) اور committed (کمٹ شدہ)۔ Git صرف ان فائلوں کو ٹریک کرتا ہے جو git add کے ذریعے واضح طور پر شامل کی گئی ہیں یا جو پہلے سے کمٹ تاریخ میں ہیں۔
اس ماڈل کو سمجھنا Git کے ساتھ مؤثر طریقے سے کام کرنے کی کلید ہے۔ ڈویلپر منتخب طور پر تبدیل شدہ فائلوں کے صرف ایک حصے کو کمٹ کے لیے تیار کر سکتا ہے، واضح وضاحت کے ساتھ منطقی طور پر مکمل کمٹ بنا سکتا ہے۔
دور دراز مخازن عام طور پر خصوصی پلیٹ فارمز پر میزبانی کی جاتی ہیں جو ویب انٹرفیس، رسائی کے انتظام کا نظام اور مشترکہ ترقی کے لیے اضافی ٹولز فراہم کرتی ہیں۔
پلیٹ فارم کا انتخاب ٹیم کے سائز، رازداری کی ضروریات اور ضروری انضمام پر منحصر ہے۔ موبائل ڈویلپمنٹ کے لیے، وسیع کمیونٹی سپورٹ اور iOS اور Android کے لیے CI/CD ٹولز کے انضمام کی وجہ سے اکثر GitHub کا انتخاب کیا جاتا ہے۔
ایک عملی منظر نامے پر غور کریں: ایک ڈویلپر موجودہ مخزن کو کلون کرتا ہے، ایک نئی برانچ بناتا ہے، تبدیلیاں کرتا ہے اور انہیں سرور پر بھیجتا ہے۔ ہر کمانڈ مخزن کے مختلف اجزاء کے ساتھ کام کرنے کا مظاہرہ کرتا ہے۔
# دور دراز مخزن کو کلون کرنا
git clone https://github.com/user/mobile-app.git
# پروجیکٹ ڈائریکٹری میں جانا
cd mobile-app
# نئی فیچر برانچ بنانا اور اس پر سوئچ کرنا
git checkout -b feature/auth
# تبدیل شدہ فائلوں کی حیثیت چیک کرنا
git status
# تمام تبدیلیاں اسٹیجنگ ایریا میں شامل کرنا
git add .
# وضاحت کے ساتھ کمٹ بنانا
git commit -m "Add authentication module"
# دور دراز مخزن میں تبدیلیاں بھیجنا
git push origin feature/auth
git status کمانڈ روزمرہ کے کام میں سب سے مفید کمانڈز میں سے ایک ہے۔ یہ دکھاتا ہے کہ کون سی فائلیں تبدیل ہوئی ہیں، کون سی کمٹ کے لیے تیار ہیں اور کون سی Git کے ذریعے بالکل ٹریک نہیں کی جا رہی ہیں۔
مخزن کی تاریخ کا تجزیہ کرنے کے لیے git log کمانڈ مختلف فارمیٹنگ فلیگ کے ساتھ استعمال ہوتی ہے۔ یہ کمٹ کی ترتیب، ان کے مصنفین، تاریخوں اور SHA-1 شناخت کنندگان کو دکھاتا ہے۔
# برانچ گراف ویژولائزیشن کے ساتھ تاریخ دیکھنا
git log --oneline --graph --all
# کسی مخصوص کمٹ میں تبدیلیاں دیکھنا
git show a1b2c3d
# موجودہ حالت کا آخری کمٹ سے موازنہ کرنا
git diff HEAD
# کسی مخصوص فائل کی تاریخ دیکھنا
git log --follow src/MainActivity.kt
--graph فلیگ برانچنگ کا ASCII گراف دکھاتا ہے، جو متعدد برانچوں پر فعال کام والے مخازن میں خاص طور پر مفید ہے۔ بار بار ریلیز والے موبائل پروجیکٹس کے لیے، بصری گراف ڈویلپمنٹ کی ساخت کا فوری جائزہ لینے میں مدد کرتا ہے۔
اکثر پوچھے گئے سوالات
مخزن تبدیلیوں کی تاریخ کے ساتھ کوڈ کا تکنیکی ذخیرہ ہے۔ پروجیکٹ ایک وسیع تصور ہے جس میں مخزن، کام کے انتظام کا نظام، دستاویزات اور ترقی کے عمل شامل ہیں۔ ایک پروجیکٹ میں کئی مخازن ہو سکتے ہیں۔
New بٹن پر کلک کرکے GitHub ویب انٹرفیس کے ذریعے ایک نیا مخزن بنائیں۔ نام، تفصیل اور رسائی کی سطح متعین کریں۔ پھر مخزن کو مقامی مشین پر کلون کریں یا git remote add origin کے ذریعے موجودہ مقامی مخزن سے منسلک کریں۔
اگر دور دراز مخزن سرور سے حذف ہو گیا ہے لیکن کم از کم ایک ڈویلپر کے پاس مقامی کاپی ہے، تو مخزن بحال کیا جا سکتا ہے۔ بس ایک نیا دور دراز مخزن بنائیں اور پوری تاریخ کے ساتھ مقامی کاپی سے git push --force چلائیں۔
فورک آپ کے اکاؤنٹ پر کسی اور کے مخزن کی کاپی ہے۔ آپ کو تاریخ کی مکمل کاپی ملتی ہے اور آپ اصلی کو متاثر کیے بغیر کوئی بھی تبدیلی کر سکتے ہیں۔ فورک Pull Request کے ذریعے اوپن سورس پروجیکٹس میں حصہ لینے کے لیے استعمال ہوتے ہیں۔
آبجیکٹ کو کمپریس کرنے اور ناقابل رسائی ڈیٹا ہٹانے کے لیے git gc استعمال کریں۔ git filter-branch یا git filter-repo کے ذریعے تاریخ سے بڑی فائلیں ہٹائیں۔ بائنری فائلوں والے پروجیکٹس کے لیے Git LFS (Large File Storage) پر غور کریں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔