استثنا قاعده: زمان استفاده از فشار اجباری برای تاریخچه های شاخه Git پاک

Git یک سیستم کنترل نسخه قدرتمند و همه کاره است که به توسعه دهندگان اجازه می دهد تا تغییرات در پایگاه کد خود را پیگیری کنند، با دیگران همکاری کنند و چندین نسخه از یک پروژه را مدیریت کنند. یکی از سناریوهای رایج در Git نیاز به بازنشانی به commit قبلی در حین ذخیره و اعمال مجدد commit های خاص است. در این پست وبلاگ، ما شما را از طریق فرآیند دستیابی به این هدف با استفاده از ترکیبی از دستورات Git مانند git branch
، git reset
، و git cherry-pick
.
در حالی که Git مزایای زیادی را ارائه می دهد، مهم است که هنگام انجام برخی عملیات، به ویژه هنگام فشار دادن نیرو، محتاط باشید. فشار دادن اجباری می تواند خطرناک باشد زیرا تاریخچه از راه دور را بازنویسی می کند، که می تواند منجر به از دست دادن کار برای سایر اعضای تیم و ایجاد سردرگمی شود. در بیشتر موارد، باید از فشار دادن نیرو، به ویژه در پروژه های بزرگ یا مشارکتی اجتناب شود.
با این حال، مواقعی وجود دارد که ممکن است بخواهید یک تاریخچه شعبه تمیز داشته باشید، به خصوص در پروژه های کوچکتر یا زمانی که به تنهایی کار می کنید. در این شرایط، فشار دادن نیرو میتواند به شما کمک کند تا تاریخچه تعهد تمیزتر و قابل مدیریتتری داشته باشید و درک و بررسی تغییراتتان را آسانتر کند. ضروری است که از خطرات آن آگاه باشید و اطمینان حاصل کنید که هنگام فشار دادن اجباری روی کار سایر اعضای تیم تأثیر نمیگذارید.
در این آموزش، نحوه بازنشانی به commit قبلی را در حین ذخیره و اعمال مجدد commit های خاص به شما نشان خواهیم داد، و همچنین در مورد زمانی که ممکن است برای دستیابی به تاریخچه شاخه تمیز استفاده از فشار نیرو مناسب باشد، بحث خواهیم کرد.
از یک دایرکتوری کار تمیز اطمینان حاصل کنید
قبل از انجام هر گونه عملیات Git، مطمئن شوید که دایرکتوری کاری شما با انجام یا پنهان کردن هر تغییری تمیز است. این به جلوگیری از از دست دادن کار کمک می کند و روند صاف را تضمین می کند.
یک شعبه موقت ایجاد کنید
برای ذخیره کامیت هایی که می خواهید نگه دارید، یک شاخه جدید به نام temp_branch یا هر نام دیگری که ترجیح می دهید ایجاد کنید:
git branch temp_branch
همچنین در صورتی که فشار اجباری شما برای جلوگیری از از دست دادن تعهدات اشتباه شود، بسیار ارزشمند خواهد بود.
ارتکاب هدف را شناسایی کنید
هش commit commitی را که می خواهید به آن بازنشانی کنید پیدا کنید. شما می توانید استفاده کنید git log
یا یک سرویس گیرنده رابط کاربری گرافیکی برای رسیدن به این هدف. بیایید فرض کنیم هش است abcd123.
به تعهد هدف بازنشانی کنید
با استفاده از شاخه فعلی خود را به commit مورد نظر بازنشانی کنید git reset
:
git reset --hard abcd123
هنگام استفاده از git reset
می توانید از یکی از این روش ها استفاده کنید:
–سخت: بازنشانیها تاریخچه، منطقه مرحلهبندی و فهرست کاری را انجام میدهند.
–نرم: بازنشانیها فقط تاریخچه را انجام میدهند و ناحیه مرحلهبندی و فهرست راهنمای کار را دست نخورده باقی میگذارند.
— مختلط: بازنشانیها تاریخچه و ناحیه مرحلهبندی را مرتکب میشوند و فهرست کاری را دست نخورده باقی میگذارند.
commit های ذخیره شده را دوباره اعمال کنید
اکنون که در commit قبلی هستید، می توانید commit هایی را که در آن ذخیره کرده اید دوباره اعمال کنید temp_branch با استفاده از git cherry-pick
. ابتدا هش های commit را با استفاده از git log پیدا کنید temp_branch. به عنوان مثال، اگر می خواهید commit ها را اعمال کنید efgh456 و ijkl789، اجرا کن:
git cherry-pick efgh456
git cherry-pick ijkl789
هرگونه تعارض را حل کنید
اگر در طول فرآیند چیدن گیلاس درگیری وجود داشت، آنها را حل کنید و ادامه دهید git cherry-pick --continue
.
تغییرات خود را به مخزن راه دور فشار دهید
در نهایت، تغییرات خود را به مخزن راه دور فشار دهید:
git push <remote> <branch> --force
به یاد داشته باشید که استفاده از –force می تواند خطرناک باشد، زیرا تاریخچه از راه دور را بازنویسی می کند. فقط زمانی از آن استفاده کنید که از کاری که انجام میدهید مطمئن باشید و همیشه در مورد هرگونه تغییر در سابقه راه دور با تیم خود در ارتباط باشید.
شاخه موقت را حذف کنید
هنگامی که commit های مورد نظر را مجدداً با موفقیت اعمال کردید، می توانید temp_branch را با استفاده از:
git branch -d temp_branch
فقط زمانی این کار را انجام دهید که 100% مطمئن شوید که با فشار زور همه چیز همانطور که شما پیش رفته بودید. قرار دادن آن بهعنوان یک پشتیبان محلی برای یک یا دو روز ممکن است شما را از هر گونه سردردی در آینده نجات دهد، به خصوص اگر به تنهایی کار میکنید و هیچ توسعهدهنده دیگری شعبه بهروز محلی ندارد.
با دنبال کردن این مراحل، می توانید در حین ذخیره و اعمال مجدد commit های خاص با استفاده از Git، به یک commit قبلی بازنشانی کنید. این فرآیند می تواند برای تصحیح اشتباهات، سازماندهی مجدد تاریخچه تعهدات یا آزمایش سناریوهای مختلف در پروژه شما مفید باشد. مثل همیشه، به یاد داشته باشید که با تیم خود ارتباط برقرار کنید و از قدرت Git مسئولانه استفاده کنید.