Back to Top


1398/10/20 - 02:32

تفاوت میان دستورات merge و rebase در git

برای ادغام تغییرات branch ها در گیت می توانیم از دو دستور merge و rebase استفاده کنیم. اما چه موقع و چرا از هر کدام استفاده کنیم؟

کلمات کلیدی

mergerebaseادغامگیتgit

تفاوت میان دستورات merge و rebase در git

rebase و mege هر دو برای یکپارچه سازی تغییرات از یک branch به branch دیگر طراحی شده اند اما هر یک به روش مختلفی این کار را انجام می دهند.

در این مقاله به branch ی که تغییرات در آن صورت گرفته و یا ويژگی های جدیدی به آن اضافه شده feature branch و به branch ی که می خواهیم روی آن ادغام انجام شود master branch می گوییم.

برای مثال، بیاید در نظر بگیریم که ما commit هایی به صورت زیر داریم، نتیجه merge به صورت ترکیب commit ها خواهد بود در حالیکه rebase همه تغییرات در feature branch را از شروع آخرین commit از master branch اضافه می کند.

تفاوت بین merge و rebase

commit به این شکل خواهد بود:

چه موقع از rebase استفاده کنیم؟ چه موقع از merge استفاده کنیم؟

اگر feature branch با سایر برنامه نویس ها مشترک است، rebase توصیه نمی شود، چون فرآیند rebase مخزن ناسازگاری ایجاد می کند.

اگر شما می خواهید تاریخچه را به طور کامل به همان صورتی که اتفاق افتاده ببینید شما باید از merge استفاده کنید. merge تاریخچه را حفظ می کند در حالیکه rebase آن را rewrite می کند.

rebase برای ساده سازی یک تاریخچه پیچیده بهتر است، شما قادر هستید تاریخچه commit را تغییر دهید. شما می توانید commit های نامطلوب را حذف کنید، دو یا چند commit را به یکی فشرده کنید یا پیام commit را ویرایش کنید.

rebase همه تداخل های یک commit را در یک زمان نشان می دهد در حالیکه merge همه آنها را در یک بار نشان می دهد. هندل کردن تداخل ها آسانتر و بهتر است اما نباید فراموش کنید که بازگرداندن rebase خیلی سخت تر از بازگردن یک merge است اگر تداخل های زیادی داشته باشیم.