merge یا ادغام بدون تداخل (non-conflicting merge)


وضعیتی که در آن تغییراتی در شاخه master (یا main) وجود دارد، اما این تغییرات باعث ایجاد تداخل با تغییرات جدید در شاخه دیگر (مانند branch-1) نمی‌شوند. در این صورت، زمانی که شما بخواهید این دو شاخه را ادغام کنید، از شیوه‌ای به‌نام ادغام بدون تداخل (non-conflicting merge) استفاده می‌شود.

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

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

git

در این حالت بین تغییرات شاخه اصلی و شاخه ای که قرار است ادغام شود تداخلی وجود ندارد، منظور از تداخل نداشتن این است که مثلا محتوای یک فایل بر روی مستر دقیقا با محتوای همان فایل روی شاخه یکی باشد

برای 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

در این حالت که بین کامیت های شاخه و کامیت های master تداخلی وجود ندارد، اگر مشابه شکل زیر در حالی که روی master هستید از دستور merge استفاده کنید، خواهید دید که پیغام hint: waiting for your editor to close the file نمایش داده می شود:

git

این پیغام به خاطر این است که گیت برای این ادغام یا merge در حال ساختن یک commit می باشد و شما باید در این فایل که در شکل زیر نشان داده شده دلیل این merge کردن را بنویسید و یا آنچه به صورت پیش فرض نوشته شده را با کلید های ترکیبی Ctrl+S ذخیره نمایید:

git

بعد از ذخیره تغییرات روی علامت ضربدر کلیک کنید تا هم این پنجره بسته شود و هم merge انجام شود:

git

بنابراین پیغامی مبنی بر ادغام شدن یا merge به صورت شکل زیر خواهد آمد:

git

حال اگر وارد تاریخچه گیت یا همان git history شوید و گزینه all branches را انتخاب نمایید خواهید دید که ادغام یا merge با پیغامی که شما وارد کردید صورت پذیرفته است. شکل زیر را ببینید:

git