Git
Chapters ▾ 2nd Edition

3.3 شاخه‌سازی در گیت - مدیریت برنچ

مدیریت برنچ

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

دستور git branch بیشتر از ساختن و نابود کردن برنچ‌ها به کار می‌آید. اگر بدون هیچ آرگومانی آنرا اجرا کنید، یک لیست ساده از برنچ‌های حاضر پروژه را به شما نمایش می‌دهد:

$ git branch
  iss53
* master
  testing

به علامت * که پیش از برنچ master آمده توجه کنید: این علامت نشان‌دهندهٔ برنچی است که چک‌اوت کرده‌اید (به بیان دیگر برنچی که HEAD به آن اشاره دارد). این بدان معناست که اگر الآن کامیتی بگیرید، برنچ master با کار جدید شما به جلو می‌رود. برای دیدن آخرین کامیت هر برنچ می‌توانید git branch -v را اجرا کنید:

$ git branch -v
  iss53   93b412c Fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 Add scott to the author list in the readme

آپشن‌های پرکاربرد --merged و --no-merged می‌توانند این لیست را به برنچ‌هایی که هنوز به برنچ حاضر مرج‌کرده یا نکرده‌اید محدود کند. برای اطلاع از اینکه چه برنچی با برنچ حاضر مرج‌شده است می‌توانید دستور git branch --merged را اجرا کنید:

$ git branch --merged
  iss53
* master

به این دلیل که شما سابقاً با iss53 مرج شده‌اید آنرا در این لیست مشاهده می‌کنید. برنچ‌هایی که در این لیست در مقابلشان * ندارد، غالباً می‌توانند بی‌مشکل با git branch -d پاک شوند. شما قبل‌تر آنها را درون برنچی دیگر ریخته‌اید پس با پاک کردنشان چیزی از دست نخواهید داد.

برای مشاهده تمام برنچ‌هایی که شامل کارهایی هستند که هنوز مرج‌شان نکرده‌اید، می‌توانید git branch --no-merged را اجرا کنید:

$ git branch --no-merged
  testing

این دستور برنچ دیگر شما را نشان می‌دهد. به این دلیل که شامل کاری است که هنوز مرج نکرده‌اید، تلاش برای پاک کردنش با git branch -d شکست خواهد خورد:

$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.

اگر واقعاً می‌خواهیدی که آنرا پاک کنید و کار خود را از دست بدهید می‌توانید با -D آنرا به گیت تحمیل کنید، همانطور که در پیغام کمکی بالا به آن اشاره شده است.

Tip

اگر نام برنچ یا کامیتی به عنوان یک آرگومان به آپشن‌های مشروح بالا داده نشود، --merged و --no-merged به ترتیب به شما خروجی‌هایی را نشان می‌دهند که به نسبت برنچ حاضر مرج‌شده یا مرج‌نشده‌اند.

همیشه می‌توانید یک آرگومان اضافه برای درخواست وضعیت مرج حاضر به نسبت برنچی خاص را وارد دستور کنید بدون آنکه بخواهید روی آن برنچ چک‌اوت کنید، مثلاً بخواهید بدانید چه برنچی با برنچ master مرج نشده است.

$ git checkout testing
$ git branch --no-merged master
  topicA
  featureB