rebase در گیت

git rebase

Git rebase یا بازسازی گیت

بازسازی یا همان rebase یکی از پرکاربردترین عملیاتها در گیت است.

قبل از rebase

برای اینکه یک rebase مطمين داشته باشیم بهتر است قبل از عملیات یک نسخه پشتیبان (back up) از branch مورد نظر خود بگیریم.

1.ابتدا به branch موردنظر خود جابجا شوید (در اینجا نام branch ، my-feature-branch است) :

git checkout my-feature-branch

2. بعد از آن یک branch جدید از همان میگیریم:

git checkout -b my-feature-branch-backup

3. سپس به شاخه مورد نظر خود برمیگردیم:

git checkout my-feature-branch

الان یک بازسازی امن خواهیم داشت. در هر جای مسیر rebase به مشکل خوردیم و نیاز به بازگشت به ابتدا داشیم، مراحل زیر را طی میکنیم:

1. ابتدا به شاخه اصلی برمیگردیم:

git checkout my-feature-branch

2. حالا با استفاده از شاخه پشتیبان آن را reset میکنیم:

git reset --hard my-feature-branch-backup

توجه داشته باشید که اگر در حین بازسازی تغییراتی در شاخه اصلی انجام دهید، با reset از بین خواهند رفت.

rebase ساده

با این بازسازی شما مطمین میشوید که تغییراتی که به صورت اساسی در شاخه دیگری انجام داده اید، در شاخه جدیدتان اعمال میشود. برای اینکار این عملیاتها را انجام دهید:
1.ابتدا به شاخه که تغییرات اساسی در آن وجود دارد و میخواهید تغییرات آن در شاخه موردنظرتان ادغام شود، بروید. (در اینجا فرض میکنیم میخواهیم شاخه master را در شاخه موردنظر rebase کنیم)

git fetch origin master

2. پس از آن به شاخه مورد نظر خود برمیگردیم:

git checkout my-feature-branch

۳. بازسازی را انجام میدهیم:

git rebase origin/master

۴. ممکن است در این بین پیامهایی دریافت کنید (این مطلب را بخوانید)

۵. پس از اتمام کار، باید force push انجام دهید.

 

نکته مهم:
شما دو شاخه دارید که بر روی هر یک از آنها تغییرات و commit هایی دارید. در زمان بازسازی، گیت commit های شاخه مبدا را در ابتدا گذاشته و commit های شاخه موردنظر را بعد از آن قرار میدهد.

force-push

زمانی که شما عملیاهای پیچیده ای نظیر بازسازی انجام میدهید، نیاز دارید تا این به روزرسانی ها را با اجبار در شاخه remote ثبت کنید. برای اینکار از کد زیر استفاده کنید:

git push --force origin my-feature-branch

زمانی که شما بر روی یک شاخه اشتراکی کار میکنید، این روش پیشنهاد نمیشود. بهتر است به جای این روش، از کد زیر استفاده کنید:

git push --force-with-lease origin my-feature-branch

با اینکار، شما دیگر قادر به push کردن در شاخه های محافظ شده نیستید. مگر اینکه:

۱. شاخه را از حفاظ خارج کنید.

۲. اجازه دهید از force-push استفاده کند.

2 دیدگاه برای “rebase در گیت

    • امیرحسین چگونیان گفته:

      خواهش میکنم.
      باعث افتحار ماست که از این مطلب استفاده کردید

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

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