Git reset چیست؟ آموزش گیت ریست از صفر تا صد
Git یا گیت، بهعنوان یک سیستم کنترل نسخه، ابزاری قدرتمند در اختیار توسعهدهندگان قرار میدهد تا بتوانند به صورت موثری بر روی پروژههای خود کار کنند. یکی از دستورات کلیدی در Git که ممکن است برای بسیاری سوال باشد، دستور Git reset است. اما Git reset چیست؟ و چگونه میتوان از آن به نحو احسن استفاده کرد؟ در این مقاله، قصد داریم به آموزش دستورات گیت ریست بپردازیم. همچنین نگاهی به برخی دیگر از دستورات مهم Git بیندازیم. پس با ما همراه باشید تا در ادامه، گام به گام با مفاهیم و دستورات Git آشنا شوید.
Git reset چیست؟
در تعریف اینکه Git reset چیست؟ باید گفت که دستور گیت ریست، برای بازگرداندن تغییرات به حالت قبلی استفاده میشود؛ مثلاً پس از حذف کامیت در گیت. این دستور دارای سه حالت اصلیِ –soft, –mixed و –hard است.
هرکدام از این حالتها تأثیر متفاوتی بر سه مکانیزم مدیریت داخلی گیت دارند که عبارتند از: درخت کامیت (HEAD)، اندیس مرحلهبندی (Staging Index)، و مسیر کاری (Working Directory).
- –soft: اشارهگر HEAD به کامیت مشخصشده بازمیگردد، اما اندیس مرحلهبندی و مسیر کاری دست نخورده باقی میمانند.
- –mixed: این حالت پیشفرض است. اشارهگر HEAD و اندیس مرحلهبندی به کامیت مشخصشده بازمیگردند، اما تغییرات مسیر کاری باقی میمانند.
- –hard: اشارهگر HEAD، اندیس مرحلهبندی و مسیر کاری همگی به کامیت مشخصشده بازمیگردند و تمام تغییرات پس از آن کامیت از بین میروند.
مرحله ۱: پیدا کردن کامیت قبلی
مرحله اول یا همان پیدا کردن کامیت قبلی به صورت زیر است:
مرحله ۲: بازگرداندن مخزن به آن مرحله
مرحله دوم یا همان بازگرداندن مخزن به مرحله مد نظر به صورت زیر است:
در ادامه مبحث قبل، میتوانیم به کامیت دلخواه در تاریخچه کامیتها بازگردیم و تغییرات بعدی را حذف کنیم. این کار برای اصلاح خطاها یا لغو تغییرات ناخواسته کاربرد دارد. بیایید سعی کنیم این کار را با استفاده از دستور reset انجام دهیم.
آموزش دستور Git reset به صورت عملی
دستور reset در گیت، برای برگشتن به کامیت قبلی در گیت و نادیده گرفتنِ تمامی تغییرات اعمالشده پس از آن به کار میآید. بعد از دانستن اینکه Git reset چیست و چه کاربردی دارد، در این بخش میخواهیم به صورت عملی از این دستور استفاده کنیم.
بازیابی گیت: یافتن کامیت در لاگ (Git Reset Find Commit in Log)
برای بازگشت به یک کامیت خاص در گیت، ابتدا باید آن را در لاگها پیدا کنیم. با استفاده از گزینه –oneline، میتوانیم لیست کامیتها را به صورت خلاصه مشاهده کنیم که شاملِ:
- هفت کاراکتر اول هش کامیت (commit hash) – این چیزی است که برای ارجاع در دستور reset به آن نیاز داریم.
- پیام کامیت (commit massage)
حالا بیایید کامیتی که میخواهیم به آن بازگردیم را پیدا کنیم:
در این مثال میخواهیم به کامیت 9a9add8 (origin/master) Added .gitignore بازگردیم. این کامیت، آخرین تغییری است که در مخزن (Git repository) اعمال شده است، پیش از اینکه همه چیز بهم بریزد.
بازنشانی گیت (git reset)
ما مخزن خود را با استفاده از دستور git reset commithash به کامیت مشخصی بازمیگردانیم. commithash هفت کاراکتر اول، هش کامیتی است که در لاگ پیدا کردهایم.
بیایید دوباره لاگ (Log) را بررسی کنیم.
هشدار: دستکاری در تاریخچه کامیتهای یک مخزن میتواند خطرناک باشد. معمولاً اعمال این نوع تغییرات در مخزن محلیِ شخصی شما مشکلی ایجاد نمیکند. بااینحال، باید از ایجاد تغییراتی که تاریخچه را در مخازن دوردست بازنویسی میکنند، خودداری کنید، بهویژه اگر دیگران نیز با آنها کار میکنند.
بازگشت از بازنشانی گیت (Git Undo Reset)
حتی اگر کامیتها، دیگر در لاگ نمایش داده نمیشوند، از گیت حذف نشدهاند؛ فقط پنهان شدهاند.
اگر هش کامیت را بدانید، میتوانید با آن بازنشانی انجام دهید:
حالا بیایید دوباره log را بررسی کنیم:
آشنایی با دیگر دستوارات مهم گیت
بعد از اینکه متوجه شدیم که Git reset چیست و چه کاربردی دارد لازم دانستیم با برخی دیگر از دستورات و اصطلاحات مهم گیت آشنا شویم.
- Gitignore چیست: فایل gitignore به گیت میگوید که کدام فایلها یا پوشهها را نادیده بگیرد. این برای جلوگیری از اضافه شدن فایلهای ناخواسته به مخزن استفاده میشود.
- Git push (گیت پوش): Git push دستوری است که برای ارسال تغییرات محلی به یک مخزن دوردست استفاده میشود. این دستور تغییرات انجامشده در شاخه فعلی را به شاخه مشابه در سرور دوردست منتقل میکند.
- دستور Git revert (گیت ریورت): Git revert دستوری است که برای لغو تغییرات ایجاد شده توسط یک کامیت خاص در تاریخچه گیت استفاده میشود. این دستور یک کامیت جدید ایجاد میکند که تغییرات کامیت مورد نظر را برعکس میکند.
تفاوت git reset با Git revert چیست؟
تا اینجای مقاله متوجه شدیم که Git reset چیست؛ اما دستور git revert در گیت بسیار با گیت ریست اشتباه گرفته میشود و در اینجا میخواهیم بدانیم که چه تفاوتی باهم دارند. تفاوت اصلی بین git reset و git revert در نحوه برخورد با تاریخچه کامیتها است. git reset یک کامیت را از تاریخچه پاک میکند و به کامیت قبل از آن برمیگرداند. درحالیکه git revert یک کامیت جدید ایجاد میکند که تغییرات کامیت قبلی را لغو میکند، بدون اینکه کامیت قبلی را پاک کند. پس git reset تاریخچه را تغییر میدهد، اما git revert تاریخچه را حفظ میکند.
سخن پایانی
در این مقاله، گفته شد که git reset چیست و چگونگی استفاده از آن را با مثالِ عملی، پیش بردیم. گیت ریست ابزاری قدرتمند برای بازگرداندن تغییرات است که به شما امکان میدهد تاریخچه تغییرات را به حالت دلخواه بازگردانید. همچنین، به معرفی و آموزش سایر دستورات و اصطلاحات مهم گیت نظیر: Gitignore، Git push، Git push، Git repository، Git revert و GitHub پرداختیم که هر کدام نقش مهمی در بهبود فرآیند توسعه نرمافزار دارند.
آموزش گیت در مکتب خونه
در دنیای برنامهنویسی، دانستن نحوه کار با گیت بیش از یک مهارت، یک ضرورت است. مکتب خونه با ویدئوهای آموزش برنامه نویسی و آموزش گیت بهروز، شما را در فراگیری این ابزار حیاتی کمک میکند. از git reset گرفته تا git push، هرآنچه برای مدیریت کدهای خود نیاز دارید. گیت در اینجا به شیوهای ساده و کاربردی آموزش داده میشود.