راهنمای گیت

ترکیب برنچ‌ها

وقتی کار روی یک برنچ تمام شد، باید تغییرات آن را به برنچ اصلی برگردانیم. این کار را با دستور merge انجام می‌دهیم.

merge ساده

ابتدا به برنچی که می‌خواهید برنچ دیگر را در آن ادغام کنید بروید:

git switch main

سپس برنچ مورد نظر را ادغام کنید:

git merge نام‌برنچ

Fast-forward در مقابل True Merge

اگر از زمان انشعاب برنچ، هیچ تغییری روی برنچ اصلی نداده باشید، گیت یک fast-forward merge انجام می‌دهد. در این حالت کامیت‌های برنچ مستقیماً به برنچ اصلی اضافه می‌شوند و کامیت merge جداگانه‌ای ساخته نمی‌شود.

برای اینکه همیشه یک کامیت merge جداگانه ساخته شود (حتی در حالت fast-forward):

git merge --no-ff نام‌برنچ

این روش تاریخچه را خواناتر نگه می‌دارد.

squash merge

اگر بخواهید تمام کامیت‌های برنچ فرعی به یک کامیت تبدیل شوند:

git merge --squash نام‌برنچ

بعد از این دستور باید خودتان یک بار commit بزنید.

تعارض در merge (Conflict)

وقتی دو برنچ یک خط از یک فایل را به شکل‌های متفاوت تغییر داده باشند، گیت نمی‌تواند به‌طور خودکار آن‌ها را ترکیب کند و یک conflict ایجاد می‌شود.

گیت در فایل تعارض‌دار چنین محتوایی می‌نویسد:

<<<<<<< HEAD
کد برنچ فعلی
=======
کد برنچ دیگر
>>>>>>> feature/login

برای حل تعارض:

  1. فایل(های) دارای تعارض را باز کنید
  2. بین <<<<<<< و >>>>>>> تصمیم بگیرید کدام کد باید بماند (یا هر دو را با هم ترکیب کنید)
  3. نشانگرهای تعارض (<<<, ===, >>>) را حذف کنید
  4. فایل را استیج و کامیت کنید:
git add فایل‌حل‌شده
git commit

لغو merge در صورت بروز تعارض

اگر می‌خواهید merge را لغو کنید و به وضعیت قبل از merge برگردید:

git merge --abort

نمایش تاریخچه merge

برای دیدن اینکه چه برنچ‌هایی merge شده‌اند:

git branch --merged

برای دیدن برنچ‌هایی که هنوز merge نشده‌اند:

git branch --no-merged