Git 2026

فصل ۲۱ · استراتژی شاخه

استراتژی شاخه — GitHub Flow تا Trunk-Based

استراتژی شاخه یعنی تیم توافق کند کد از کجا شروع شود، چطور به main برسد، و چه شاخه‌ای حق زنده ماندن طولانی دارد. شاخهٔ چند‌هفته‌ای با main واگرا می‌شود و merge را سخت می‌کند.

🎯 اهداف یادگیری

  • GitHub Flow را پیاده کنی
  • بدانی Git Flow کجا هنوز معنی دارد
  • Trunk-based و feature flag را توضیح دهی
  • سیاست شاخه را با Ruleset قفل کنی
GitHub Flow

شکل ۱۵ — شاخهٔ کوتاه از main، PR، CI، Review، Merge، Deploy.

🌊 GitHub Flow — پیش‌فرض این کتاب

  1. main همیشه قابل استقرار است
  2. شاخهٔ کوتاه‌عمر از main
  3. PR + Checks اجباری
  4. Merge → deploy خودکار
  5. اگر خراب شد: revert سریع نه freeze طولانی

مناسب وب، SaaS، اپ‌هایی با feature flag.

🌳 Git Flow — نسخه‌های سنگین

شاخه‌های develop، release/*، hotfix/*، main. برای نرم‌افزار با نسخهٔ شماره‌دار و چرخهٔ QA طولانی (امبدد، موبایل استور با ریویو یک‌هفته‌ای) هنوز زنده است. برای استارتاپ وب سربار است.

🚂 Trunk-Based

همه به main (trunk) با شاخه‌های چندساعته یا مستقیم. فیچر ناتمام پشت feature flag. نیاز به تست عالی و deploy ممتد دارد. گوگل و بسیاری از تیم‌های بزرگ این‌گونه‌اند.

مدل طول شاخه پیچیدگی سرعت تحویل
GitHub Flow روز کم بالا
Git Flow هفته زیاد متوسط
Trunk ساعت کم در Git، زیاد در flag خیلی بالا
شاخهٔ `feat/ali` سه‌ماهه

هر روز rebase سخت‌تر می‌شود. اگر کار بزرگ است، آن را پشت flag به main تکه‌تکه تحویل بده.

در VS Code git.branchProtection: ["main"] جلوی کامیت مستقیم را می‌گیرد — لایهٔ محلی قبل از Ruleset سرور.

سؤالات مصاحبه (با پاسخ)

Mid — چرا Git Flow با GitHub Actions درد دارد؟ چون دو شاخهٔ بلند باید همیشه همگام شوند؛ CI دوگانه و cherry-pick hotfix.

Senior — environment protection چگونه با Flow جور می‌شود؟ main → staging خودکار؛ production نیاز به Approve در Environment دارد نه شاخهٔ جداگانهٔ اجباری.

✅ چک‌لیست فهم

  • مدل تیم را در یک جمله می‌گویی
  • main را مقدس می‌دانی
  • شاخهٔ طولانی را بو می‌کشی

فصل بعد: Conventional Commits — زبانی برای ماشین و انسان.

فصل ۲۱ از ۳۶ · مرجع جامع و حرفه‌ای Git و GitHub · ویرایش 1.0.0