جریان‌های کاری شاخه‌ها — Git Flow و GitHub Flow

استراتژی‌های معروف سازمان‌دهی شاخه‌ها: Git Flow، GitHub Flow و Trunk-Based — کدام برای پروژه شما مناسب است؟

جریان کاری (Workflow) چیست؟

تا حالا یاد گرفتید شاخه بسازید، سوئیچ کنید و merge کنید. اما در پروژه واقعی سؤال بزرگ‌تر هست: چطور شاخه‌ها را سازمان‌دهی کنیم؟ به این استراتژی‌ها «جریان کاری» یا Workflow می‌گویند.

۱. GitHub Flow (ساده و مدرن) ⭐

محبوب‌ترین جریان امروز — ساده و مناسب اکثر تیم‌ها و پروژه‌های وب:

  1. شاخه main همیشه قابل انتشار (deployable) است
  2. برای هر کار جدید، شاخه‌ای توصیفی بسازید: feature/login
  3. روی شاخه کامیت کنید و مرتب push کنید
  4. وقتی آماده شد، Pull Request باز کنید و بازبینی بگیرید
  5. بعد از تأیید، merge به main و انتشار!
main:    A---B---C---D---E---F
              \       /
feature:        C1--C2--C3  (از B جدا و در D ادغام شده)

مناسب برای: پروژه‌های وب، استقرار مداوم (CI/CD)، تیم‌های چابک

۲. Git Flow (کلاسیک و ساختاریافته)

جریان معروفی که توسط Vincent Driessen معرفی شد — برای پروژه‌های بزرگ با نسخه‌بندی رسمی:

شاخهنقشعمر
mainنسخه‌های انتشار (فقط merge)همیشگی
developادغام قابلیت‌ها در حال توسعههمیشگی
feature/*هر قابلیت جدید (از develop جدا می‌شود)موقت
release/*آماده‌سازی نسخه جدیدموقت
hotfix/*رفع فوری باگ در نسخه منتشرشدهموقت
main:     A-----------------M------N
            \               /      \
develop:     B---C---D---E---F  (قابلیت‌ها اینجا جمع می‌شوند)
                  \     /
feature/x:         C1--C2

مناسب برای: نرم‌افزارهای نسخه‌دار (مثل اپ موبایل)، تیم‌های بزرگ با چرخه انتشار مشخص

Git Flow برای پروژه‌های وب با استقرار مداوم معمولاً پیچیده‌تر از نیاز است — GitHub Flow اغلب انتخاب بهتری است.

۳. Trunk-Based Development (پیشرفته)

توسعه‌دهندگان تغییرات کوچک و مکرر را مستقیم (یا با شاخه‌های چندساعته) به main می‌فرستند:

کدام را انتخاب کنم؟

وضعیتپیشنهاد
پروژه شخصی / یادگیریGitHub Flow (یا حتی فقط main!)
تیم کوچک، پروژه وبGitHub Flow ⭐
اپ موبایل با نسخه‌بندیGit Flow
تیم بزرگ با CI/CD پیشرفتهTrunk-Based

یک چرخه کامل GitHub Flow در عمل

# ۱. به‌روزرسانی main:
git switch main
git pull origin main

# ۲. شاخه جدید برای قابلیت:
git switch -c feature/dark-mode

# ۳. کار و کامیت:
git add . && git commit -m "افزودن حالت تاریک"

# ۴. ارسال به ریموت:
git push -u origin feature/dark-mode

# ۵. ساخت Pull Request در گیت‌هاب و بازبینی...

# ۶. بعد از تأیید، merge در گیت‌هاب، سپس محلی:
git switch main
git pull origin main
git branch -d feature/dark-mode

قوانین مشترک همه جریان‌ها

  1. main را خراب نکنید — هرگز مستقیم روی main کامیت نزنید (در تیم)
  2. نام شاخه گویا باشد — fix/navbar-mobile نه ali-branch
  3. شاخه‌ها کوتاه‌عمر باشند — merge سریع یعنی تعارض کم
  4. قبل از شاخه جدید، main را بگیرید — همیشه از آخرین وضعیت شروع کنید

خلاصه

این مبحث بخشی از دوره آموزش کامل Git است.

ابزارهای مرتبط