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

فرض کنید یک تیم در حال توسعهی نرمافزار است. یک نفر روی ویژگی جدید کار میکند، دیگری در حال رفع باگ است و نفر سوم مستندات پروژه را بهروزرسانی میکند. اگر همه این تغییرات روی یک مسیر واحد (Main Branch) انجام شوند، خیلی زود پروژه دچار هرجومرج میشود. اینجاست که Branching یا شاخهسازی وارد میشود. شاخهها به شما اجازه میدهند همزمان روی بخشهای مختلف پروژه کار کنید بدون اینکه کد اصلی مختل شود.
Branch در Git چیست؟
یک Branch در Git صرفاً یک اشارهگر (Pointer) به یک Commit خاص است.
- شاخه پیشفرض در هر مخزن معمولاً
main
یاmaster
است. - هر شاخهی جدید در واقع یک خط توسعهی مستقل از تاریخچهی پروژه ایجاد میکند.
به زبان ساده: 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ها
- کار همزمان روی چند ویژگی
هر ویژگی یا Bugfix در یک Branch جداگانه توسعه داده میشود. - محافظت از کد اصلی (main)
شاخهی اصلی همیشه پایدار و قابل انتشار باقی میماند. - افزایش سرعت توسعه
توسعهدهندگان میتوانند بدون ایجاد تداخل با هم کار کنند. - امکان آزمایش و یادگیری
میتوانید در یک Branch جانبی آزمایش کنید، بدون اینکه به پروژه اصلی آسیبی برسد.
استراتژیهای رایج Branching
1. Feature Branching
هر ویژگی جدید در یک Branch جداگانه ساخته میشود و بعد از تکمیل به main
ادغام میشود.
2. Git Flow
یک مدل پیچیدهتر که شامل شاخههایی مثل develop
، release
و hotfix
است.
3. Trunk-Based Development
مدل سادهتر که در آن شاخهها خیلی کوتاهمدت هستند و سریع Merge میشوند.
مثال عملی: توسعه یک ویژگی در Branch
- ایجاد Branch برای ویژگی:
git checkout -b feature-dark-mode
- انجام تغییرات روی فایلها.
- ثبت تغییرات:
git add .
git commit -m "Add dark mode feature"
- بازگشت به شاخه اصلی:
git checkout main
- ادغام تغییرات:
git merge feature-dark-mode
جمعبندی
- Branch در Git یک اشارهگر به Commitهاست که مسیرهای توسعهی موازی ایجاد میکند.
- با استفاده از شاخهها میتوانیم کار تیمی را راحتتر و مدیریت پروژه را شفافتر کنیم.
- استراتژیهای مختلفی مثل Feature Branching و Git Flow وجود دارند که هر تیم میتواند با توجه به نیاز خود انتخاب کند.
در فصل بعد (Chapter 9: Git Merge and Resolve Conflicts) یاد میگیریم چطور شاخهها را به هم ادغام کنیم و تعارضها (Conflicts) را مدیریت کنیم.