merge یا ادغام با تداخل (conflicting merge)


ادغام با تداخل (conflicting merge) زمانی است که تغییرات در شاخه‌های مختلف بر روی یک یا چند خط کد با هم در تضاد باشند و نیاز به رفع تداخل دارد. در این مورد، کاربر باید به صورت دستی تداخل‌ها را حل کند.

merge یا ادغام با تداخل

در این حالت حداقل یک تداخل یا conflict بین کامیت های شاخه ای که قرار است merge شود با کامیت های master وجود دارد.

برای merge یا ادغام در این حالت به ترتیب مراحل زیر را انجام دهید:

  1. با دستور git switch master پوینتر یا اشاره گر را به شاخه اصلی یا master انتقال دهید.
    bash
    git switch master
  2. توسط دستور زیر merge یا ادغام را انجام دهید:
    bash
    git merge <branch-name>

    در دستور فوق منظور از <branch-name> نام شاخه ای است که قرار است merge یا ادغام شود، و شما می توانید هر نامی را جایگزین آن کنید.

git

به عنوان مثال فرض کنید قصد داریم شاخه branch-1 که در شکل زیر نشان داده شده را با شاخه اصلی یا همان master ادغام یا merge کنیم.

git

در صورتی که HEAD یا نشانه گر روی شاخه master می باشد مطابق شکل زیر از دستور git merge branch-1 استفاده می کنیم:

git

چون متن استفاده شده در فایل text-1.txt در شاخه متفاوت است با master تداخل یا conflict برای فایل text-1.txt مطابق شکل فوق نمایش داده می شود و همانگونه که در شکل زیر نشان داده شده در مقابل نام این فایل یک علامت تعجب ! قرار گرفته است:

git

در این صورت اگر روی این فایل مطابق شکل زیر کلیک کنید خواهید دید که هر دو متن بین >>>>>>>>>> و علامت ========= قرار گرفته اند و در بالای این متن ها چهار گزینه برای انتخاب به شرح زیر وجود دارد:

  • Accept Current Change
  • در این صورت محتوای فایل موجود در master جایگزین می شود یعنی متن بالایی

  • Accept Incoming Change
  • در این صورت محتوای فایل موجود روی شاخه جایگزین می گردد یعنی متن پایینی

  • Accept Both Changes
  • هر دو متن باهم اضافه می شوند

  • Compare Changes
  • هر دو متن نمایش داده می شود تا باهم مقایسه کنیم و سپس یک یا هر دو را انتخاب کنیم.

git

برای مثال اگر روی گزینه Accept Both Changes کلیک کنیم به صورت شکل زیر هر دو متن اضافه خواهد شد:

git

حال بایستی این تغییرات را توسط دستور git add مطابق شکل زیر به استیج اضافه کنیم و کامیت کنیم:

bash
git add .

و در ادامه با دستور زیر کامیت را انجام دهید.

bash
git commit -m "your message"
git

اگر مراحل فوق را به درستی انجام داده باشید و وارد تاریخچه گیت یا همان git history شوید خواهید دید که مطابق شکل زیر شاخه beranch-1 با master ادغام یا merge شده است.

git