Develop Branch Git Flow میں مرکزی انٹیگریشن برانچ ہے جہاں ریلیز تیار کرنے سے پہلے تمام مکمل کردہ feature branches کو merge کیا جاتا ہے۔ main کے برعکس، develop میں تازہ ترین لیکن ابھی تک جاری نہ کی گئی تبدیلیاں ہوتی ہیں — یہاں ٹیم کے تمام ڈویلپرز سے روزانہ کوڈ انٹیگریشن ہوتی ہے۔ Atlassian، 2024 کے مطابق، develop Git Flow میں ایک لازمی برانچ ہے اور ٹیم کے لیے ایک مستحکم انٹیگریشن ماحول فراہم کرتا ہے۔
اہم نکات
Develop Branch (ڈویلپمنٹ برانچ) Git Flow میں ایک طویل مدتی برانچ ہے جو تمام ڈویلپرز سے کوڈ انٹیگریشن کے لیے مرکزی مرکز کے طور پر کام کرتی ہے۔ ڈویلپمنٹ مکمل ہونے اور کوڈ ریویو کے بعد feature branches اس میں merge کی جاتی ہیں۔
develop میں کوڈ ہمیشہ ریلیز بنانے کے لیے تیار حالت میں ہوتا ہے، اگرچہ ابھی تک پروڈکشن میں ڈپلائے نہیں کیا گیا۔ اس کا مطلب ہے کہ develop کی تمام خصوصیات ریویو، ٹیسٹنگ اور انٹیگریشن جانچ سے گزر چکی ہیں، لیکن ابھی بھی اپنے ریلیز سائیکل کا انتظار کر رہی ہیں۔
main کے برعکس، جہاں ہر کوڈ ورژن ایک ریلیز ہے، develop میں تبدیلیوں کا ایک مسلسل سلسلہ ہوتا ہے۔ feature branches کے merge ہونے پر develop میں commits ظاہر ہوتے ہیں، جو دن میں کئی بار ہو سکتا ہے۔
Vincent Driessen، 2010 کے مطابق، develop ایک کامیاب برانچنگ ماڈل کا اہم عنصر ہے، کیونکہ یہ ڈرافٹ کام کو ریلیز کے لیے تیار ورژن سے الگ کرتا ہے۔
develop اور main کے درمیان فرق کو سمجھنا مناسب Git Flow ورک فلو کے لیے بہت اہم ہے۔ یہ برانچز مختلف کام انجام دیتی ہیں اور استحکام کے مختلف تقاضے رکھتی ہیں۔
| خصوصیت | Develop | Main / Master |
|---|---|---|
| مقصد | نئی خصوصیات کا انضمام | مستحکم ریلیز کوڈ |
| استحکام | اعلیٰ (ٹیسٹ کے بعد) | زیادہ سے زیادہ (پروڈکشن) |
| Commit کی تعدد | یومیہ (feature merge) | فی ریلیز (ہر 1-4 ہفتے) |
| برانچ کا ذریعہ | اس سے feature بنائے جاتے ہیں | اس سے hotfix بنائے جاتے ہیں |
| Merge | PR کے ذریعے feature سے | merge کے ذریعے release سے |
develop اور main میں تقسیم ٹیم کو پروڈکشن ورژن کے استحکام کو خطرے میں ڈالے بغیر مسلسل نیا کوڈ ضم کرنے کی اجازت دیتی ہے۔ ڈویلپرز سرکاری ریلیز سے پہلے بھی، PR کی منظوری کے فوراً بعد develop میں اپنا کوڈ دیکھ سکتے ہیں۔
Git Flow ماڈل میں، develop feature branches (تبدیلیوں کا ذریعہ) اور release branches (ریلیز کی تیاری) کے درمیان مرکزی مقام رکھتا ہے۔ اس درجہ بندی کو سمجھنا مؤثر برانچنگ کی بنیاد ہے۔
یہ ڈھانچہ اس بات کو یقینی بناتا ہے کہ develop میں ہمیشہ تمام نئی خصوصیات کے ساتھ تازہ ترین کوڈ ہو، جبکہ main میں صرف تصدیق شدہ پروڈکشن کوڈ ہو۔ یہ App Store اور Google Play میں طویل ریویو سائیکل والے موبائل پروجیکٹس کے لیے خاص طور پر اہم ہے۔
Develop feature، release اور hotfix branches کے درمیان مرکزی ربط کے طور پر کام کرتا ہے۔ merge کی سمتوں کو سمجھنا تصادم اور commit کے ضیاع کو روکنے کے لیے ضروری ہے۔
develop میں کوڈ کوالٹی اعلیٰ ہونی چاہیے، لیکن مطلق نہیں۔ main کے برعکس، جہاں ہر غلطی کا مطلب فوری hotfix ہے، develop معمولی خامیوں کی اجازت دیتا ہے جو ریلیز سے پہلے ٹھیک کر دی جائیں گی۔
develop میں merge کرنے سے پہلے کوڈ کے لیے کم از کم تقاضے:
CI/CD پائپ لائن میں خودکار جانچ develop میں ہر push پر چلنی چاہیے۔ اگر build ٹوٹ جاتا ہے، تو ذمہ دار ڈویلپر کو ایک گھنٹے کے اندر مسئلہ حل کرنا ہوگا یا اپنا commit واپس لینا ہوگا۔
develop کے لیے GitHub Actions ترتیب دینا اس بات کو یقینی بناتا ہے کہ ہر PR merge کرنے سے پہلے خودکار جانچ سے گزرے۔ ایک عام پائپ لائن میں build، ٹیسٹ اور لِنٹنگ شامل ہیں۔
# GitHub Actions — merge کے بعد develop کی جانچ
name: Develop CI
on:
pull_request:
branches: [develop]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Unit tests
run: ./gradlew testDebug
- name: Lint
run: ./gradlew lint
- name: Build
run: ./gradlew assembleDebug
develop میں merge کرنا انٹیگریشن برانچ کے استحکام کو برقرار رکھنے کے لیے سخت قوانین پر عمل کرنا چاہیے۔ ان قوانین کی خلاف ورزی تصادم، ٹوٹے ہوئے builds اور ٹیم کے وقت کے ضیاع کا سبب بنتی ہے۔
PR تازہ ترین ہو کا قاعدہ خاص طور پر اہم ہے۔ اگر کوئی feature branch ایک ہفتہ پہلے بنائی گئی تھی اور develop 50 commits آگے بڑھ گیا ہے، تو براہ راست merge تصادم کا سبب بن سکتا ہے جسے develop کی بجائے PR کے سیاق و سباق میں حل کرنا بہتر ہے۔
برانچ پروٹیکشن رولز GitHub، GitLab یا Bitbucket سطح پر ترتیبات ہیں جو develop میں غلط تبدیلیوں کو روکتی ہیں۔ وہ یقینی بناتے ہیں کہ حادثاتی push بھی انٹیگریشن برانچ کو نہ توڑے۔
develop کے لیے تجویز کردہ حفاظتی اصول:
develop تحفظ ترتیب دینے میں 10 منٹ لگتے ہیں لیکن ٹوٹی ہوئی انٹیگریشن برانچ سے متعلق ہفتوں کے ڈاؤن ٹائم کو روکتا ہے۔ ملٹی پلیٹ فارم ٹیموں والے موبائل پروجیکٹس کے لیے، یہ خاص طور پر متعلقہ ہے۔
ایک عام ڈویلپر کے دن پر غور کریں: صبح وہ develop کو اپ ڈیٹ کرتا ہے، ایک نئی feature branch بناتا ہے، اور کام مکمل کرنے کے بعد تبدیلیوں کو واپس develop میں merge کرتا ہے۔
# صبح develop sync
git checkout develop
git pull origin develop
# develop سے نئی feature branch بنانا
git checkout -b feature/add-push-notifications
# خصوصیت پر کام...
git add . && git commit -m "Add FCM integration"
# ڈویلپمنٹ کے دوران develop اپ ڈیٹ کرنا
git fetch origin develop
git rebase origin/develop
# PR منظوری کے بعد — لوکل develop اپ ڈیٹ کریں
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications
develop میں git pull کمانڈ ایک ساتھ دو کام انجام دیتی ہے: git fetch (سرور سے نئے commits لاتا ہے) اور git merge (انہیں لوکل برانچ کے ساتھ merge کرتا ہے)۔ develop کے لیے، یہ معیاری ہم آہنگی کا طریقہ ہے۔
اگر build توڑنے والا کوڈ develop میں آ جائے تو فوری کارروائی کرنی چاہیے۔ develop کے ڈاؤن ٹائم کا ہر گھنٹہ پوری ڈویلپمنٹ ٹیم کے لیے مسدود کام ہے۔
اگر build توڑنے والا کوڈ develop میں آ جائے تو مسئلہ پیدا کرنے والی تبدیلیوں کو کالعدم کرنے والا نیا commit بنانے کے لیے git revert استعمال کریں۔ develop میں git reset استعمال نہ کریں — یہ تاریخ کو دوبارہ لکھتا ہے جو دوسرے ٹیم ممبران کے پاس پہلے سے موجود ہے۔
# مسئلہ والا commit تلاش کرنا
git log --oneline develop
# revert کے ذریعے commit منسوخ کرنا (محفوظ)
git revert a1b2c3d
# ریموٹ develop میں فکس بھیجنا
git push origin develop
# کسی مخصوص commit میں تبدیلیاں دیکھنا
git show a1b2c3d --stat
اکثر پوچھے جانے والے سوالات
ایک یا دو ڈویلپرز والے پروجیکٹس کے لیے، develop اکثر غیر ضروری ہوتا ہے — main اور feature branches کافی ہیں۔ جیسے ہی ٹیم 3+ لوگوں تک بڑھتی ہے، develop مستحکم پروڈکشن کوڈ سے نامکمل خصوصیات کو الگ کرنے کے لیے ضروری ہو جاتا ہے۔
نہیں، کسی بھی پیشہ ورانہ پروجیکٹ میں develop میں براہ راست commits ممنوع ہیں۔ تمام تبدیلیاں کوڈ ریویو اور خودکار جانچ کے ساتھ Pull Request سے گزرتی ہیں۔ استثنا README یا CI کنفیگریشن کی انتظامی ترامیم ہیں، لیکن یہ بھی PR کے ذریعے کرنا بہتر ہے۔
Trunk-based development میں کوئی علیحدہ develop branch نہیں ہے — تمام ڈویلپر بہت چھوٹی feature branches (1-2 دن) کے ساتھ main میں کام کرتے ہیں۔ یہ Git Flow کا ایک متبادل ہے، جو ٹیسٹ آٹومیشن کی اعلیٰ سطح والی DevOps ثقافت میں مقبول ہے۔
ہر ریلیز کے بعد، release branch کو develop میں واپس merge کیا جاتا ہے تاکہ ریلیز کی تیاری کے دوران کی گئی تمام اصلاحات شامل ہوں۔ اگر ایسا نہیں کیا جاتا، تو develop ریلیز کوڈ سے مختلف ہو جائے گا، جس سے اگلی ریلیز میں تصادم ہو گا۔
اگر develop ٹوٹ جاتا ہے، تو ایک سینئر ڈویلپر آخری مستحکم commit سے hotfix branch بناتا ہے، مسئلہ حل کرتا ہے، اور خصوصی اسٹیٹس والے PR کے ذریعے براہ راست develop میں فکس merge کرتا ہے۔ بحالی کے بعد، بنیادی وجہ کا تجزیہ کیا جاتا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں