Feature Branch « یک تکنیک انشعاب در Git است که در آن هر ویژگی جدید در یک شاخه جداگانه، جدا از کد اصلی توسعه مییابد. این به چندین توسعهدهنده اجازه میدهد همزمان روی وظایف مختلف بدون خطر آسیب رساندن به نسخه پایدار پروژه کار کنند. به گزارش Atlassian, 2024، Feature Branch عنصر کلیدی Git Flow است و در اکثر پروژههای تجاری استفاده میشود.
نکات اصلی
feature/نام-ویژگی در Git Flow استاندارد.Feature Branch (شاخه ویژگی) « یک شاخه موقت در Git است که از develop برای توسعه یک قابلیت جداگانه ایجاد میشود. بر خلاف شاخههای طولانیمدت main و develop، شاخههای feature برای مدت محدود « از چند ساعت تا چند هفته وجود دارند.
هدف اصلی feature branch جداسازی تغییرات مرتبط با یک وظیفه از بقیه کد است. توسعهدهنده میتواند در شاخه خود آزمایش کند، commitهای زیادی انجام دهد و حتی کد را خراب کند، بدون اینکه روی کار سایر اعضای تیم تأثیر بگذارد.
پس از اتمام توسعه، شاخه feature از طریق Pull Request با بررسی کد اجباری به develop بازگردانده میشود. پس از ادغام، شاخه معمولاً حذف میشود تا مخزن تمیز بماند.
به گزارش Vincent Driessen, 2010، مدل Git Flow با شاخههای feature به دلیل تقسیم واضح مسئولیت بین انواع مختلف شاخهها به استاندارد صنعت تبدیل شد.
گردش کار با feature branch شامل دنبالهای از مراحل است که توسعهدهنده برای هر ویژگی جدید انجام میدهد. این فرآیند تعارضات ادغام را به حداقل میرساند و کنترل کیفیت کد را تضمین میکند.
همگامسازی دورهای با develop بسیار مهم است. هرچه شاخه feature بدون ادغام تغییرات از develop بیشتر عمر کند، احتمال تعارضات در ادغام نهایی بیشتر میشود.
| دفعات همگامسازی | ریسک تعارضات | راحتی توسعه |
|---|---|---|
| روزانه | کم | نیاز به rebase یا merge مکرر |
| هفتهای یک بار | متوسط | حالت راحت، تعارضات متوسط |
| ماهی یک بار | زیاد | ریسک حل تعارضات پیچیده ادغام |
| هرگز | بحرانی | ادغام ممکن است بدون از دست دادن داده غیرممکن باشد |
نامگذاری شاخهها « بخش مهمی از انضباط تیمی است. یک استاندارد نامگذاری یکپارچه به شما امکان میدهد به سرعت تعیین کنید روی چه وظیفهای کار میشود و چه کسی آن را انجام میدهد.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.استفاده از شناسه وظیفه از JIRA، Trello یا سیستم دیگر بهترین روش است. این به طور خودکار کد را به وظیفه متصل میکند و جستجوی شاخهها را از طریق git log ساده میکند.
Pull Request (یا Merge Request در GitLab) « درخواستی برای ادغام شاخه feature در develop است. PR فقط یک عملیات فنی نیست، بلکه فرآیند بررسی کد تیمی است که کیفیت کد را بهبود میبخشد و دانش را در تیم منتشر میکند.
یک PR خوب شامل عنوانی با توضیح مختصر وظیفه، لینک به تیکت و شرح تغییرات است. توسعهدهنده باید مشخص کند دقیقاً چه کاری انجام شده، چه فایلهایی تغییر کردهاند و آیا خطرات بالقوهای برای سایر بخشهای پروژه وجود دارد.
تیم کد را در PR بررسی میکند، نظرات میگذارد، تغییرات درخواست میکند (change requests) و ادغام را تأیید میکند (approve). پس از تأیید، merge یا squash merge انجام میشود.
میانگین زمان بررسی PR در توسعه موبایل از 4 تا 24 ساعت است. کتابخانه Danger بخشی از بررسیها را خودکار میکند و لینترها و تستها را مستقیماً در PR اجرا میکند.
پس از تأیید PR، شاخه feature میتواند به روشهای مختلف در develop ادغام شود. انتخاب استراتژی ادغام بر تاریخچه commitها و امکان بازگشت تغییرات تأثیر میگذارد.
برای پروژههای موبایل با انتشارات مکرر، اغلب از squash merge استفاده میشود: تاریخچه تمیزی در develop میدهد و جزئیات توسعه در توضیحات PR و وظیفه رهگیر باقی میماند.
حتی توسعهدهندگان با تجربه نیز هنگام کار با شاخههای feature اشتباه میکنند. آگاهی از مشکلات رایج به جلوگیری از اتلاف وقت و داده کمک میکند.
بهترین راه برای جلوگیری از این مشکلات، توافق بر سر قوانین کار در شروع پروژه و استفاده از بررسیهای خودکار در خط لوله CI/CD است.
یک سناریوی عملی را در نظر بگیرید: توسعهدهنده یک ویژگی جدید احراز هویت در برنامه موبایل را شروع میکند. یک شاخه feature ایجاد میکند، روی کد کار میکند و وظیفه را با Pull Request به پایان میرساند.
# بهروزرسانی develop و ایجاد شاخه feature
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# کار روی ویژگی: commitها
git add src/ui/login/
git commit -m "Add login screen layout"
# ارسال شاخه feature به سرور
git push origin feature/add-login-screen
# همگامسازی با develop (rebase)
git fetch origin develop
git rebase origin/develop
# پس از تأیید PR: بهروزرسانی local develop و حذف شاخه
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
دستور git branch -d شاخه را فقط پس از ادغام کامل تغییراتش حذف میکند. اگر شاخه ادغام نشده باشد، Git استفاده از git branch -D را برای حذف اجباری پیشنهاد میکند « این پرچم را با احتیاط استفاده کنید.
خط لوله CI/CD باید برای هر شاخه feature قبل از ایجاد PR اجرا شود. این امکان شناسایی مشکلات در مراحل اولیه را فراهم میکند، قبل از اینکه کد برای بررسی به سایر توسعهدهندگان برسد.
# GitHub Actions برای بررسی شاخه feature
name: Feature Branch CI
on:
push:
branches:
- 'feature/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: ./gradlew test
- name: Lint check
run: ./gradlew lint
خط لوله بررسی میکند که کد کامپایل میشود، تستها پاس میشوند و سبک کد مطابق با استانداردهای پذیرفته شده در تیم است. فقط پس از گذراندن تمام بررسیها میتوان Pull Request ایجاد کرد.
سوالات متداول
بله، این یک روش استاندارد است. هر توسعهدهنده میتواند در شاخه feature خود کار کند و همه آنها به طور مستقل با develop همگامسازی میشوند. قانون اصلی « یک شاخه برای یک وظیفه، برای جلوگیری از وابستگیهای cross-task در کد.
در شاخه feature خود git rebase origin/develop را اجرا کنید. اگر تعارضاتی ایجاد شد « آنها را یکی یکی حل کنید، commitها روی آخرین وضعیت develop بازنویسی میشوند. پس از rebase برای بهروزرسانی شاخه راه دور به git push --force نیاز دارید.
اگر وظیفه لغو شده است، شاخه feature را میتوان به سادگی حذف کرد. برای شاخه محلی از git branch -d feature/name و برای شاخه راه دور از git push origin --delete feature/name استفاده کنید. تمام تغییرات commit نشده از بین خواهند رفت.
در اصل یکی هستند. تیمهای مختلف از پیشوندهای متفاوتی استفاده میکنند: feature/، task/، feat/. تفاوتی در مکانیک Git وجود ندارد « همه آنها شاخههای موقتی هستند که از develop برای توسعه ایزوله ایجاد شدهاند.
بله، این یک روش اجباری است. شاخههای پس از ادغام لیست مراجع را شلوغ میکنند و میتوانند باعث سردرگمی شوند. بیشتر پلتفرمها (GitHub, GitLab) حذف شاخه را بلافاصله پس از merge PR پیشنهاد میکنند و شاخههای محلی با دستور git branch -d حذف میشوند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید