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 آنرا به گیت تحمیل کنید، همانطور پیغام مفید بالا به آن اشاره می‌کند.

نکته

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

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

$ git checkout testing
$ git branch --no-merged master
  topicA
  featureB
scroll-to-top