شاخه‌ها در Git — git branch

مفهوم شاخه (Branch) در گیت، ساخت شاخه جدید با git branch و اینکه چرا شاخه‌ها قدرتمندترین قابلیت گیت هستند.

شاخه چیست؟

شاخه (Branch) یک خط مستقل از توسعه است. وقتی شاخه جدید می‌سازید، مثل این است که یک دنیای موازی از پروژه ایجاد می‌کنید: در آن هر کاری می‌کنید (کامیت، حذف، تغییر) بدون اینکه خط اصلی (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
از فاصله (space) و حروف بزرگ در نام شاخه استفاده نکنید — خط تیره (-) بهترین جداکننده است.

حذف شاخه

# حذف شاخه (اگر merge شده باشد):
git branch -d feature-search

# حذف اجباری (حتی اگر merge نشده):
git branch -D feature-search
نمی‌توانید شاخه‌ای را که الان رویش هستید حذف کنید! اول به شاخه دیگری بروید.

تغییر نام شاخه

# تغییر نام شاخه فعلی:
git branch -m new-name

خلاصه

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

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