برنامه نویسی

آموزش ادغام بازگشتی سه طرفه – انجمن DEV

Summarize this content to 400 words in Persian Lang

روشی که در سیستم های کنترل نسخه برای ترکیب خودکار تغییرات از شاخه های مختلف استفاده می شود. با مقایسه سه نسخه از کد کار می کند base، head، و شاخه ای که باید ادغام شود. با تجزیه و تحلیل تفاوت‌های بین این نسخه‌ها، ابزار ادغام تلاش می‌کند تا تغییرات را به‌طور یکپارچه ادغام کند.

از زمانی که یاد گرفتم چگونه از Git و GitHub برای کار مشترک با اعضای گروه استفاده کنم، همیشه از رویه ای پیروی می کردم که در آن ابتدا هرگونه تضاد در شعبه خود را قبل از ادغام با اصلی یا ایجاد روابط عمومی حل می کنم. به این ترتیب، من از هر گونه مشکلی که به دلیل عدم حل مناسب تعارض به شعبه اصلی وارد می شود، جلوگیری می کنم.اگر شخص دیگری در اصلی ادغام شود که روی همان ویژگی/فایل من در شاخه دیگری کار می کند، من آخرین نسخه اصلی را بازیابی می کنم و آن را در شاخه کاری خود ادغام می کنم تا هرگونه تضاد ایجاد شده را برطرف کنم.

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

من دو شماره جداگانه برای کار روی GENEREADME ایجاد کردم، #14 و #15، با commit های مربوطه که مسائل 1f7222d و 3d0b9cf را ​​بسته بودند.

برای آزمایشگاه، یکی از الزامات این بود که مسائل را با پیوند دادن commit های مربوطه در نظرات موضوع، ببندند. بنابراین اینجاست که متوجه شدم پس از فشار دادن ادغام به main، commit ادغام به main را برای شماره 14 نمی بینم، در عوض فقط commit ادغام را برای شماره 15 می بینم.

و فهمیدم که این همان جایی است که فوروارد سریع اتفاق افتاد.

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

روشی که در سیستم های کنترل نسخه برای ترکیب خودکار تغییرات از شاخه های مختلف استفاده می شود. با مقایسه سه نسخه از کد کار می کند base، head، و شاخه ای که باید ادغام شود. با تجزیه و تحلیل تفاوت‌های بین این نسخه‌ها، ابزار ادغام تلاش می‌کند تا تغییرات را به‌طور یکپارچه ادغام کند.

از زمانی که یاد گرفتم چگونه از Git و GitHub برای کار مشترک با اعضای گروه استفاده کنم، همیشه از رویه ای پیروی می کردم که در آن ابتدا هرگونه تضاد در شعبه خود را قبل از ادغام با اصلی یا ایجاد روابط عمومی حل می کنم. به این ترتیب، من از هر گونه مشکلی که به دلیل عدم حل مناسب تعارض به شعبه اصلی وارد می شود، جلوگیری می کنم.
اگر شخص دیگری در اصلی ادغام شود که روی همان ویژگی/فایل من در شاخه دیگری کار می کند، من آخرین نسخه اصلی را بازیابی می کنم و آن را در شاخه کاری خود ادغام می کنم تا هرگونه تضاد ایجاد شده را برطرف کنم.

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

من دو شماره جداگانه برای کار روی GENEREADME ایجاد کردم، #14 و #15، با commit های مربوطه که مسائل 1f7222d و 3d0b9cf را ​​بسته بودند.

برای آزمایشگاه، یکی از الزامات این بود که مسائل را با پیوند دادن commit های مربوطه در نظرات موضوع، ببندند. بنابراین اینجاست که متوجه شدم پس از فشار دادن ادغام به main، commit ادغام به main را برای شماره 14 نمی بینم، در عوض فقط commit ادغام را برای شماره 15 می بینم.

توضیحات تصویر

و فهمیدم که این همان جایی است که فوروارد سریع اتفاق افتاد.

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا