هنگام کار بر روی یک پروژه با یک تیم یا توسط خودتان، مهم است که تغییرات در پایه کد را از طریق کنترل نسخه پیگیری کنید.

Git دستورات مختلفی را برای ردیابی تغییرات فایل در اختیار شما قرار می دهد. این دستورات به شما امکان می دهد با توسعه دهندگان دیگر همکاری کنید، به تاریخچه فایل دسترسی داشته باشید، کد را مدیریت کنید و موارد دیگر.

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

ما از چند کد HTML ساده استفاده می کنیم تا نشان دهیم چگونه می توانید با استفاده از Git به یک commit قبلی بازگردانید و بازنشانی کنید.

بیا شروع کنیم!

نحوه ریست کردن یک فایل یا commit

در این بخش، نحوه بازگردانی/تنظیم مجدد فایل یا commit با استفاده از دستورات زیر را خواهید آموخت:

  • git revert.
  • git reset.

چگونه یک فایل را برگردانیم یا با استفاده از git revert فرمان

در اینجا نحوی برای آن آمده است git revert دستور به نظر می رسد:

git revert [commit ID]

این کدی است که ما با آن کار خواهیم کرد:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Document</title>
  </head>
  <body>
    <h1>Hello World!</h1>
  </body>
</html>

بیایید فرض کنیم که فایل بالا وضعیت فعلی پایه کد برای هر توسعه دهنده ای است که روی پروژه کار می کند.

ما تغییراتی را در فایل ایجاد می کنیم، سپس تغییرات را اضافه، commit و فشار می دهیم. به این معنا که:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Document</title>
  </head>
  <body>
    <h1>Hello World!</h1>

    <ul>
        <li>Red</li>
        <li>Yellow</li>
        <li>Orange</li>
    </ul>
    
  </body>
</html>

ما لیستی از رنگ ها را به کد اضافه کرده ایم. بیایید تغییرات را با استفاده از دستور زیر فشار دهیم:

git add .
git commit -m "added colors to the HTML file"
git push -u origin main

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

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

اما اگر رنگ های اضافه شده بخشی از ویژگی هایی باشد که قرار است در آینده برای کاربران منتشر شود، چه؟ با انتشار این ویژگی قبل از زمان، اشتباه کرده اید.

برای بازگشت به commit قبلی، به شناسه آن commit خاص نیاز دارید. برای دریافت commit ID دستور زیر را اجرا کنید:

git log

این دستور شناسه commit، نویسنده و تاریخ هر commit را به شما نشان می دهد. می بایست شبیه به این باشه:

git-log
git log

در مورد خود ما، شناسه commit 785dd5a6dd0f1ebd9e06045df787d8d28fd38285 است.

بنابراین برای تنظیم مجدد فایل، شما استفاده کنید git revert [commit ID]. به این معنا که:

git revert 785dd5a6dd0f1ebd9e06045df787d8d28fd38285

دستور بالا تمام تغییرات ایجاد شده در فایل قبل از انجام آن commit خاص را بازنشانی می کند. فایل HTML اکنون به شکل زیر است:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Document</title>
  </head>
  <body>
    <h1>Hello World!</h1>
  </body>
</html>

اکنون می توانید این حالت جدید را فشار دهید.

توجه داشته باشید که git revert دستور commit برگردانده شده را از مخزن راه دور حذف نمی کند. در عوض، یک commit جدید برای تغییرات برگردانده شده ایجاد می کند.

این به این معنی است که شما تاریخچه کامیتی که برگردانده شده است و یک commit جدید برای فایل حاوی تغییرات برگردانده شده خواهید داشت.

نحوه بازنشانی یا کامیت کردن یک فایل با استفاده از git reset فرمان

را git reset دستور همچنین می تواند برای برگرداندن تغییرات استفاده شود. تاریخچه commit زیر را در نظر بگیرید:

git-log-1

تصویر بالا تمام تاریخچه commit را نشان می دهد – از اولین commit تا commit برگشت داده شده در آخرین بخش.

پیشنهاد می‌کنیم بخوانید:  راهنمای متد forEach() جاوا اسکریپت متد forEach() یکی از روش‌های متعددی است که می‌توان از آن برای حلقه زدن محتویات یک آرایه استفاده کرد و هر عنصر را به صورت متوالی نشان داد. این ویژگی‌های متمایز را دارد که آن را از سایر تکنیک‌های تکرار روی آرایه‌ها متمایز می‌کند، به این معنی که این شما هستید که انتخاب کنید کدام روش را انتخاب کنید...

اگر استفاده کنیم git reset [commit ID] برای بازگشت به یک commit خاص، هر commit دیگر پس از آن از تاریخچه commit حذف می شود.

در اینجا یک مثال است:

git reset c1e4962a9b355f023c250609cfa9303a67b3063e

با استفاده از commit ID اولین commit، به حالت commit اول برمی گردیم.

در حال اجرا git log دستور، شما یک تاریخچه commit مانند این خواهید داشت:

git-log-2

در حالی که با موفقیت به اولین commit بازگشته اید، سابقه سایر commit ها در کد پاک شده است. این می تواند تأثیر بسیار منفی در هنگام همکاری با توسعه دهندگان دیگر داشته باشد.

خلاصه

در این مقاله، ما در مورد دو دستور مهم Git برای لغو تغییرات در یک مخزن Git صحبت کردیم. git revert و git reset.

هر دو دستور شما را به حالت قبلی مشخص شده در پایه کد اما با افکت های مختلف برمی گرداند.

را git revert دستور به یک commit مشخص برمی‌گردد، اما تاریخچه هر commit دیگر را در پایگاه کد نگه می‌دارد و یک commit جدید برای تغییرات برگردانده شده ایجاد می‌کند. این یک راه کارآمدتر برای خنثی کردن تغییرات هنگام همکاری با دیگران است.

متناوبا، git reset دستور به یک commit مشخص برمی گردد، سپس هر commitی را که بعد از commit مشخص شده می آید حذف می کند.

برای ایمن بودن، استفاده کنید git revert هنگام لغو تغییرات در مخزن که توسعه دهندگان دیگر روی آن کار می کنند.

شما می توانید استفاده کنید git reset در مواردی که می خواهید پس از لغو تغییرات به طور کامل از شر commit خلاص شوید.

کد نویسی مبارک!