Develop Branch — شاخه اصلی یکپارچهسازی در Git Flow است که تمام شاخههای feature تکمیلشده قبل از آمادهسازی release در آن ادغام میشوند. برخلاف main، develop شامل جدیدترین تغییرات اما هنوز منتشرنشده است — در اینجا یکپارچهسازی روزانه کد از همه توسعهدهندگان تیم انجام میشود. به گزارش Atlassian، 2024، develop یک شاخه اجباری در Git Flow است و یک محیط یکپارچهسازی پایدار برای تیم فراهم میکند.
نکات اصلی
Develop Branch (شاخه توسعه) — یک شاخه طولانیعمر در Git Flow است که به عنوان گره مرکزی برای یکپارچهسازی کد از همه توسعهدهندگان عمل میکند. شاخههای feature پس از اتمام توسعه و گذراندن کد-ریویو در آن ادغام میشوند.
کد در develop همیشه در وضعیتی آماده برای ایجاد release قرار دارد، اگرچه هنوز در تولید منتشر نشده است. این بدان معناست که تمام ویژگیهای موجود در develop بررسی، تست و تأیید یکپارچهسازی را پشت سر گذاشتهاند، اما هنوز منتظر چرخه release خود هستند.
برخلاف main، که در آن هر نسخه از کد یک release است، develop حاوی جریان پیوستهای از تغییرات است. commitها در develop با ادغام شاخههای feature ظاهر میشوند، که ممکن است چندین بار در روز رخ دهد.
به گزارش Vincent Driessen، 2010، develop عنصر کلیدی یک مدل شاخهبندی موفق است، زیرا کارهای در حال انجام را از نسخههای آماده انتشار جدا میکند.
درک تفاوتهای بین develop و main برای کار صحیح در Git Flow حیاتی است. این شاخهها وظایف متفاوتی دارند و الزامات متفاوتی برای پایداری دارند.
| ویژگی | Develop | Main / Master |
|---|---|---|
| هدف | یکپارچهسازی ویژگیهای جدید | کد release پایدار |
| پایداری | بالا (پس از تست) | حداکثر (تولید) |
| تعداد commitها | روزانه (ادغام feature) | بهازای release (هر 1-4 هفته) |
| منبع شاخهها | feature از آن ایجاد میشود | hotfix از آن ایجاد میشود |
| ادغام | از feature از طریق PR | از release از طریق merge |
جداسازی develop و main به تیم اجازه میدهد به طور مداوم کد جدید را یکپارچه کند بدون اینکه پایداری نسخه تولیدی به خطر بیفتد. توسعهدهندگان میتوانند کد خود را بلافاصله پس از تأیید PR در develop ببینند، حتی قبل از release رسمی.
در مدل Git Flow، develop جایگاه مرکزی بین شاخههای feature (منبع تغییرات) و شاخههای release (آمادهسازی برای انتشار) دارد. درک این سلسلهمراتب اساس شاخهبندی مؤثر است.
چنین ساختاری تضمین میکند که develop همیشه حاوی آخرین نسخه کد با تمام ویژگیهای جدید است، و main — فقط کد تولیدی تأییدشده. این به ویژه برای پروژههای موبایل با چرخه طولانی بررسی در App Store و Google Play مهم است.
Develop به عنوان حلقه مرکزی بین شاخههای feature، release و hotfix عمل میکند. درک جهتهای ادغام اساس جلوگیری از تعارضات و از دست رفتن commitها است.
کیفیت کد در develop باید بالا باشد، اما مطلق نیست. برخلاف main، که در آن هر خطا به معنای hotfix فوری است، develop نواقص جزئی را که قبل از release برطرف میشوند مجاز میداند.
حداقل الزامات برای کد قبل از ادغام در develop:
بررسیهای خودکار در خط لوله CI/CD باید روی هر push به develop اجرا شوند. اگر کامپایل خراب شود، توسعهدهنده مسئول باید مشکل را ظرف یک ساعت برطرف کند یا commit خود را برگرداند.
پیکربندی GitHub Actions برای develop تضمین میکند که هر PR قبل از ادغام بررسی خودکار را پشت سر میگذارد. خط لوله معمولی شامل کامپایل، تستها و لینتینگ است.
# GitHub Actions — بررسی 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 باید تابع قوانین سختگیرانهای باشد تا پایداری شاخه یکپارچهسازی حفظ شود. نقض این قوانین منجر به تعارضات، کامپایلهای خراب و اتلاف وقت تیم میشود.
قانون بهروزرسانی PR به ویژه مهم است. اگر شاخه feature یک هفته پیش ایجاد شده و develop 50 commit جلوتر رفته باشد، ادغام مستقیم میتواند منجر به تعارضاتی شود که بهتر است در بافت PR حل شوند، نه در develop.
Branch protection rules (قوانین محافظت از شاخه) — تنظیماتی در سطح GitHub، GitLab یا Bitbucket هستند که از تغییرات نادرست در develop جلوگیری میکنند. آنها تضمین میکنند که حتی یک push تصادفی شاخه یکپارچهسازی را خراب نمیکند.
قوانین محافظتی توصیهشده برای develop:
پیکربندی محافظت از develop 10 دقیقه طول میکشد، اما از هفتهها توقف مرتبط با خراب شدن شاخه یکپارچهسازی جلوگیری میکند. برای پروژههای موبایل با تیمهای چندپلتفرمی این به ویژه مهم است.
یک روز معمولی یک توسعهدهنده را در نظر بگیرید: صبح develop را بهروز میکند، یک شاخه feature جدید ایجاد میکند و پس از اتمام کار، تغییرات را دوباره در develop ادغام میکند.
# همگامسازی صبحگاهی develop
git checkout develop
git pull origin develop
# ایجاد شاخه feature جدید از develop
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
دستور git pull در develop دو عملیات را همزمان انجام میدهد: git fetch (commitهای جدید را از سرور دریافت میکند) و git merge (آنها را با شاخه محلی ادغام میکند). برای develop این روش استاندارد همگامسازی است.
اگر کدی که کامپایل را خراب کرده وارد develop شد، باید سریع عمل کرد. هر ساعت توقف develop به معنای مسدود شدن کار کل تیم توسعهدهندگان است.
اگر کدی که کامپایل را خراب کرده وارد develop شد، از git revert برای ایجاد یک commit جدید که تغییرات مشکلدار را لغو میکند استفاده کنید. از git reset در develop استفاده نکنید — این تاریخچهای را که سایر شرکتکنندگان دارند بازنویسی میکند.
# یافتن commit مشکلدار
git log --oneline develop
# لغو commit از طریق revert (ایمن)
git revert a1b2c3d
# ارسال اصلاحیه به develop راه دور
git push origin develop
# مشاهده تغییرات در یک commit خاص
git show a1b2c3d --stat
سوالات متداول
برای پروژههای با یک تا دو توسعهدهنده، develop اغلب اضافی است — main و شاخههای feature کافی هستند. به محض اینکه تیم به 3+ نفر میرسد، develop برای جداسازی ویژگیهای ناتمام از کد تولیدی پایدار ضروری میشود.
خیر، نوشتن مستقیم در develop در هر پروژه حرفهای ممنوع است. همه تغییرات از طریق Pull Request با کد-ریویو و بررسیهای خودکار انجام میشود. استثنا — ویرایشهای اداری README یا پیکربندی CI، اما بهتر است آنها نیز از طریق PR انجام شوند.
در trunk-based development شاخه جداگانهای به نام develop وجود ندارد — همه توسعهدهندگان در main با شاخههای feature بسیار کوتاه (1-2 روز) کار میکنند. این جایگزینی برای Git Flow است که در فرهنگ DevOps با سطح بالایی از اتوماسیون تست محبوب است.
پس از هر release، شاخه release دوباره در develop ادغام میشود تا تمام اصلاحات انجامشده در فرآیند آمادهسازی release به develop وارد شود. اگر این کار انجام نشود، develop از کد release متفاوت خواهد بود که در release بعدی باعث تعارض میشود.
اگر develop خراب شد، توسعهدهنده ارشد یک شاخه hotfix از آخرین commit پایدار ایجاد میکند، مشکل را برطرف میکند و اصلاحیه را مستقیماً از طریق PR با وضعیت ویژه در develop ادغام میکند. پس از بازیابی، تجزیه و تحلیل علت خرابی انجام میشود.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید