برنامه نویسی

Git Rebase: نحوه به روزرسانی یک شعبه ویژگی GIT پس از تنظیم مجدد یا تغییر نام شعبه پایه آن

مقدمه

اگر در حال کار بر روی یک شاخه ویژگی در Git و شاخه پایه آن هستید (به عنوان مثال ، releases_1.0.25) دریافت می کند تغییر نام یا تنظیم مجدد به نسخه قبلی، شما ممکن است با مشکلات ادغام آخرین تغییرات روبرو شوید.

در این مقاله بحث خواهیم کرد چرا این اتفاق می افتد ، با چه مشکلی روبرو می شوید و چگونه می توانید شعبه ویژگی خود را به روز کنید برای اطمینان از هماهنگی آن با آخرین شاخه پایه.


نمای کلی سناریو

چه اتفاقی افتاد؟

  1. شما در ابتدا یک شاخه ویژگی از آن ایجاد کرده اید releases_1.0.25:
   git checkout -b feature/myfea origin/releases_1.0.25
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. بعداً شاخه پایه بود:

    • تغییر نام دادن به releases_1.0.26
    • تنظیم مجدد (برش) از شاخه قبلی (releases_1.0.24)
  2. اکنون ، شاخه ویژگی شما است خارج از همگام سازی و حاوی تغییراتی است که ممکن است دیگر مرتبط نباشد. شما نیاز دارید آن را به روز کنید با جدیدترین releases_1.0.25بشر


مسائل مشترک ممکن است با آن روبرو شوید

اگر سعی می کنید بدون استفاده صحیح از تنظیم مجدد شاخه پایه ، بکشید یا ادغام شوید ، ممکن است با آن روبرو شوید:

  • درگیری ها را ادغام کنید به دلیل تغییر در شاخه پایه.
  • متعهد به ظاهر تکراری یا در تاریخ گم می شود.
  • تاریخ واگرا، در هنگام فشار آوردن ، باعث ایجاد مشکلات می شود.
  • خطاهایی مانند “شاخه شما جلوتر از مبدا است”، منجر به فشار ناکام.

چگونه شعبه ویژگی خود را به روز کنیم؟

مرحله 1: آخرین تغییرات را واکشی کنید

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

git fetch --all
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این آخرین تغییرات را از شاخه های از راه دور ، از جمله شاخه پایه تنظیم مجدد می کند.


مرحله 2: شعبه ویژگی خود را پرداخت کنید

به شاخه ویژگی خود که در آن کار کرده اید تغییر دهید:

git checkout feature/myFeature
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله 3: شعبه ویژگی خود را به آخرین شعبه پایه بازنشانی کنید

پس از releases_1.0.25 تنظیم مجدد به releases_1.0.24، شما باید تنظیم مجدد شاخه ویژگی شما به آخرین نسخه از releases_1.0.25:

git reset --hard origin/releases_1.0.25
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • این تمام تغییرات محلی را حذف می کند و شاخه خود را با هم تراز می کند releases_1.0.25بشر
  • اگر دارید تغییرات محلی شما نمی خواهید از دست بدهید ، آنها را ببندید قبل از اجرای این دستور:
  git stash
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله 4: دوباره تغییر کنید شاخه ویژگی خود را تغییر دهید

اگر در شعبه ویژگی خود تعهداتی دارید که بخشی از آن نیست releases_1.0.25، شما باید روباه یا ادغام کردن آنها برگشت.

گزینه 1: Rebase (توصیه شده)

Rebasing تغییرات شما را در بالای آخرین شعبه پایه اعمال می کند:

git rebase origin/releases_1.0.25
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • مزیت: تاریخ تعهد تمیز را حفظ می کند.
  • ضرر: ممکن است نیاز به حل و فصل درگیری ها به صورت دستی داشته باشد.

در صورت بروز درگیری ها در هنگام بازگرداندن:

git rebase --continue
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اگر می خواهید سقط جنین:

git rebase --abort
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


گزینه 2: ادغام (رویکرد جایگزین)

اگر ترجیح می دهید تاریخ را بازنویسی نکنید ، می توانید در عوض ادغام کنید:

git merge origin/releases_1.0.25
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • مزیت: راحت تر از rebase رسیدگی می کند.
  • ضرر: یک تعهد ادغام اضافی در تاریخ ایجاد می کند.

مرحله 5: شعبه به روز شده را فشار دهید

پس از به روزرسانی شعبه ویژگی خود ، آن را به سمت از راه دور فشار دهید:

git push --force-with-lease
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • --force-with-lease شما را تضمین می کند تغییرات دیگران را بازنویسی نکنید در حالی که نیرو.

اگر به جای بازگرداندن ادغام شده اید ، یک فشار عادی کار می کند:

git push
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله ششم: تغییرات خود را تأیید کنید

تاریخچه تعهد را بررسی کنید تا اطمینان حاصل شود که همه چیز به درستی به روز شده است:

git log --oneline --graph --all
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


از کدام روش استفاده کنید؟

روش مورد استفاده
تنظیم مجدد و rebase سخت (توصیه می شود) اگر می خواهید شروع تمیز بر اساس آخرین releases_1.0.25بشر
روباه اگر می خواهید تغییرات خود را در بالا نگه دارید از آخرین releases_1.0.25بشر
ادغام کردن اگر می خواهید آخرین تغییرات را ادغام کنید بدون بازنویسی تاریخ.

بهترین روشها برای جلوگیری از این وضعیت

  1. به طور مرتب با شاخه پایه همگام سازی کنید (git pull origin ) برای جلوگیری از اختلافات بزرگ.
  2. از پرچم های ویژگی استفاده کنید برای به حداقل رساندن وابستگی به شاخه های به سرعت در حال تغییر.
  3. قبل از تنظیم مجدد شعبه های پایه با تیم تأیید کنید، زیرا این همه شاخه های ویژگی حاصل از آن را تحت تأثیر قرار می دهد.
  4. ترجیح می دهید دوباره از ادغام استفاده کنید برای حفظ تاریخ تعهد تمیز.

پایان

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

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

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

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

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

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