Gitبرنامه نویسی Programming

شاخه‌ها (Branching) در Git؛ مدیریت همزمان چندین مسیر توسعه

Chapter 8: Branching

فرض کنید یک تیم در حال توسعه‌ی نرم‌افزار است. یک نفر روی ویژگی جدید کار می‌کند، دیگری در حال رفع باگ است و نفر سوم مستندات پروژه را به‌روزرسانی می‌کند. اگر همه این تغییرات روی یک مسیر واحد (Main Branch) انجام شوند، خیلی زود پروژه دچار هرج‌ومرج می‌شود. اینجاست که Branching یا شاخه‌سازی وارد می‌شود. شاخه‌ها به شما اجازه می‌دهند همزمان روی بخش‌های مختلف پروژه کار کنید بدون اینکه کد اصلی مختل شود.

Branch در Git چیست؟

یک Branch در Git صرفاً یک اشاره‌گر (Pointer) به یک Commit خاص است.

  • شاخه پیش‌فرض در هر مخزن معمولاً main یا master است.
  • هر شاخه‌ی جدید در واقع یک خط توسعه‌ی مستقل از تاریخچه‌ی پروژه ایجاد می‌کند.

به زبان ساده: Branch مثل باز کردن یک جاده فرعی از جاده اصلی است. می‌توانید در آن کار کنید و بعد دوباره به مسیر اصلی برگردید.

git branch
git branch

ایجاد و مدیریت Branchها

1. ایجاد یک Branch جدید

git branch feature-login

این دستور شاخه‌ای به نام feature-login ایجاد می‌کند.

2. جابه‌جایی بین Branchها

git checkout feature-login

یا در نسخه‌های جدیدتر Git:

git switch feature-login

3. ایجاد و جابه‌جایی همزمان

git checkout -b feature-login

یا:

git switch -c feature-login

4. مشاهده لیست Branchها

git branch
  • شاخه فعلی با علامت * مشخص می‌شود.

5. حذف Branch

git branch -d feature-login

اگر شاخه هنوز Merge نشده باشد و بخواهید آن را مجبور به حذف کنید:

git branch -D feature-login

چرایی استفاده از Branchها

  1. کار همزمان روی چند ویژگی
    هر ویژگی یا Bugfix در یک Branch جداگانه توسعه داده می‌شود.
  2. محافظت از کد اصلی (main)
    شاخه‌ی اصلی همیشه پایدار و قابل انتشار باقی می‌ماند.
  3. افزایش سرعت توسعه
    توسعه‌دهندگان می‌توانند بدون ایجاد تداخل با هم کار کنند.
  4. امکان آزمایش و یادگیری
    می‌توانید در یک Branch جانبی آزمایش کنید، بدون اینکه به پروژه اصلی آسیبی برسد.

استراتژی‌های رایج Branching

1. Feature Branching

هر ویژگی جدید در یک Branch جداگانه ساخته می‌شود و بعد از تکمیل به main ادغام می‌شود.

2. Git Flow

یک مدل پیچیده‌تر که شامل شاخه‌هایی مثل develop، release و hotfix است.

3. Trunk-Based Development

مدل ساده‌تر که در آن شاخه‌ها خیلی کوتاه‌مدت هستند و سریع Merge می‌شوند.

مثال عملی: توسعه یک ویژگی در Branch

  1. ایجاد Branch برای ویژگی:
git checkout -b feature-dark-mode
  1. انجام تغییرات روی فایل‌ها.
  2. ثبت تغییرات:
git add .
git commit -m "Add dark mode feature"
  1. بازگشت به شاخه اصلی:
git checkout main
  1. ادغام تغییرات:
git merge feature-dark-mode

جمع‌بندی

  • Branch در Git یک اشاره‌گر به Commitهاست که مسیرهای توسعه‌ی موازی ایجاد می‌کند.
  • با استفاده از شاخه‌ها می‌توانیم کار تیمی را راحت‌تر و مدیریت پروژه را شفاف‌تر کنیم.
  • استراتژی‌های مختلفی مثل Feature Branching و Git Flow وجود دارند که هر تیم می‌تواند با توجه به نیاز خود انتخاب کند.

در فصل بعد (Chapter 9: Git Merge and Resolve Conflicts) یاد می‌گیریم چطور شاخه‌ها را به هم ادغام کنیم و تعارض‌ها (Conflicts) را مدیریت کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا