شاخهها در Git — git branch
مفهوم شاخه (Branch) در گیت، ساخت شاخه جدید با git branch و اینکه چرا شاخهها قدرتمندترین قابلیت گیت هستند.
شاخه چیست؟
شاخه (Branch) یک خط مستقل از توسعه است. وقتی شاخه جدید میسازید، مثل این است که یک دنیای موازی از پروژه ایجاد میکنید: در آن هر کاری میکنید (کامیت، حذف، تغییر) بدون اینکه خط اصلی (main) تحت تأثیر قرار گیرد. وقتی کارتان تمام شد، شاخه را به主线 برمیگردانید (ادغام میکنید).
چرا شاخه مهم است؟
بدون شاخه، همه تغییرات مستقیم روی خط اصلی میرفتند:
- ❌ قابلیت نیمهکاره و خراب وارد نسخه اصلی میشد
- ❌ کار همزمان چند نفر روی قابلیتهای مختلف غیرممکن بود
- ❌ آزمایش ایدههای جدید پرریسک بود
با شاخه:
- ✅ هر قابلیت/رفع باگ در شاخه خودش توسعه مییابد
- ✅ خط اصلی (main) همیشه سالم و قابلانتشار میماند
- ✅ چند نفر همزمان روی شاخههای جدا کار میکنند
- ✅ ایده جدید؟ یک شاخه بسازید و آزادانه آزمایش کنید
دیدن شاخهها
git branch
خروجی:
* main
ستاره (*) یعنی شاخه فعلی شما. الان فقط یک شاخه داریم: main.
دیدن شاخهها با آخرین کامیت
git branch -v
# * main a1b2c3d افزودن صفحه ورود کاربر
ساخت شاخه جدید
git branch feature-search
این دستور شاخه جدیدی به نام feature-search میسازد — اما وارد آن نمیشوید! همچنان روی main هستید:
git branch
# feature-search
# * main
مفهوم HEAD
HEAD یک اشارهگر ویژه است که نشان میدهد الان کجا هستید — روی کدام شاخه و کدام کامیت. وقتی شاخه عوض میکنید، HEAD جابهجا میشود.
# دیدن محل فعلی HEAD:
git log --oneline -1
# a1b2c3d (HEAD -> main) افزودن صفحه ورود کاربر
شاخهها چطور کار میکنند؟ (تصویری)
قبل از شاخه جدید:
A---B---C (main, HEAD)
بعد از ساخت feature-search:
A---B---C (main, feature-search, HEAD)
بعد از کامیت در feature-search (بعد از سوئیچ):
A---B---C (main)
\
D (feature-search, HEAD)
هر شاخه فقط یک اشارهگر به یک کامیت است — همین و همه!
نامگذاری شاخهها
| نوع | الگوی پیشنهادی | مثال |
|---|---|---|
| قابلیت جدید | feature/... | feature/user-login |
| رفع باگ | fix/... یا bugfix/... | fix/payment-error |
| مستندات | docs/... | docs/api-guide |
| آزمایشی | experiment/... | experiment/new-ui |
حذف شاخه
# حذف شاخه (اگر merge شده باشد):
git branch -d feature-search
# حذف اجباری (حتی اگر merge نشده):
git branch -D feature-search
تغییر نام شاخه
# تغییر نام شاخه فعلی:
git branch -m new-name
خلاصه
- شاخه = خط مستقل توسعه؛ دنیای موازی برای پروژه
git branchلیست شاخهها؛git branch <نام>ساخت شاخه جدید- HEAD نشان میدهد الان کجا هستید
git branch -dحذف شاخه merge شده- ساخت شاخه در گیت رایگان و فوقسریع است!
این مبحث بخشی از دوره آموزش کامل Git است.