Git یک سیستم کنترل نسخه قدرتمند برای ردیابی و مدیریت تغییرات و فایل‌ها در کدهای منبع و سایر دارایی‌های دیجیتال شما است. یکی از عملکردهای اصلی Git “تعهد” است.

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

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

در این مقاله نحوه تنظیم مجدد را به شما نشان می دهم HEAD در Git. اما چیست HEAD در گیت؟ این چیزی است که ما در ادامه به آن نگاه می کنیم!

آنچه را پوشش خواهیم داد

  • چیست HEAD در گیت؟
  • چرا بازنشانی به HEAD یا هر کامیت دیگری در Git؟
  • نحوه ریست کردن به HEAD در Git
  • چگونه با دستور Git Reset به یک Commit خاص بازنشانی کنیم
  • نتیجه

چیست HEAD در گیت؟

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

هنگامی که یک commit جدید ایجاد می کنید، Git به طور خودکار به روز می شود HEAD برای اشاره به تعهد جدید. می توانید استفاده کنید git log --oneline دستور برای مشاهده تاریخچه commit شاخه فعلی، و commit در بالای لیست همان چیزی است که HEAD در حال حاضر به.

به عنوان مثال، در کد نمونه ای که برای نشان دادن نحوه تنظیم مجدد به شما استفاده می کنم HEAD در Git، جریان HEAD هش commit است d8cd0ee، با پیام commit Linked JavaScript file:

اسکرین شات-2023-04-10-at-10.39.42

HEAD همچنین می تواند برای اشاره به وضعیت دایرکتوری کاری فعلی استفاده شود. به عنوان مثال، اگر تغییراتی را در فایل‌های موجود در فهرست کاری خود ایجاد کرده‌اید، اما آنها را متعهد نکرده‌اید، می‌توانید از دستور استفاده کنید git diff HEAD برای مشاهده تفاوت بین دایرکتوری کاری و آخرین commit:

پیشنهاد می‌کنیم بخوانید:  نحوه استفاده از Git و GitHub - مقدمه ای برای مبتدیان

اسکرین شات-2023-04-10-at-10.43.29

بنابراین، هنگامی که ما در مورد تنظیم مجدد صحبت می کنیم HEAD، به معنای بازنشانی شاخه فعلی به آخرین commit است. جدای از HEAD، همچنین می توانید با commit های دیگر را بازنشانی کنید git reset --hard <commit-hash> فرمان

حتی می توانید از برخی اعداد استفاده کنید HEAD خود را به بازگشت به یک تعهد خاص. برای مثال، HEAD{0} به معنی HEAD خود، HEAD{1} به معنای تعهد قبل از HEAD، HEAD{2} یعنی دو commit قبل از HEAD، و غیره.

چرا بازنشانی به HEAD یا هر کامیت دیگری در Git؟

برخی از موقعیت‌هایی که ممکن است شما را به بازنشانی نیاز داشته باشد HEAD در Git شامل موارد زیر است:

  • لغو تغییرات ناخواسته: اگر برخی تغییرات غیرمتعهد دارید که شما را گیج می کند و می خواهید از شر آنها خلاص شوید
  • unstaging changes: اگر تغییراتی را به قسمت مرحله بندی اضافه کرده اید و دیگر آنها را نمی خواهید
  • رفع یک commit بد: اگر قبلاً یک commit دارید و متوجه شده اید که مشکلاتی در آن وجود دارد که شما را گیج می کند
  • تقسیم یک commit: اگر تعهدی که شما یا یکی از اعضای تیم انجام می دهید شامل تغییرات بسیار زیادی است که دامنه آنها متفاوت است.

نحوه ریست کردن به HEAD در Git

برای وضوح، اجرا کنید git log --oneline برای نشان دادن سابقه تعهد خود:

اسکرین شات-2023-04-10-at-10.39.42-1

اگر یک پایگاه کد بزرگ است و می خواهید جزئیات بیشتری را ببینید، می توانید اجرا کنید git log --oneline --graph:

اسکرین شات-2023-04-10-at-11.04.56

این git log --oneline --graph دستور شامل یک نمایش گرافیکی از تاریخچه commit است. این می تواند به ویژه در تجسم سناریوهای انشعاب و ادغام پیچیده مفید باشد.

پیشنهاد می‌کنیم بخوانید:  راهنمای عملگر سه تایی در جاوا اسکریپت اپراتور سه تایی یک اپراتور سه عاملی است که در اکثر زبان های برنامه نویسی از جمله جاوا اسکریپت، جاوا، سی پلاس پلاس، سی شارپ و بسیاری دیگر پشتیبانی می شود. از آن به عنوان یک عملگر شرطی نیز یاد می شود زیرا به عنوان جایگزین مختصرتری برای عبارت شرطی (if-else) در نظر گرفته می شود. در این راهنما، ما...

در دو تصویر بالا، HEAD هش commit است d8cd0ee، با پیام commit Linked JavaScript file. این تعهد قبلی است که انجام دادم.

برای بازنشانی کد پایه به آن commit، اجرا می کنم git reset --hard HEAD:

اسکرین شات-2023-04-10-at-11.10.45

می بینید که من پاسخ را دریافت کردم HEAD is now at d8cd0ee Linked JavaScript file– همانطور که در اسکرین شات نیز مشاهده می کنید.

این git reset --hard HEAD فرمان تمام تغییرات غیرمتعهد را حذف می کند حتی اگر آنها را به قسمت مرحله بندی اضافه کرده باشید.

چگونه با دستور Git Reset به یک Commit خاص بازنشانی کنیم

به غیر از تنظیم مجدد به HEAD خود، شما همچنین می توانید به یک commit خاص بازنشانی کنید.

اول، اجرا کنید git reflog برای دیدن اینکه چگونه هر commit با HEAD:

اسکرین شات-2023-04-10-at-11.17.37

اکنون می توانید اجرا کنید git reset --hard HEAD@{n} برای بازگشت به یک تعهد خاص به عنوان مثال، من می خواهم به پیام commit برگردم Linked CSS file. بنابراین، من فرار می کنم git reset --hard HEAD@{5} برای بازگشت به آن تعهد:

اسکرین شات-2023-04-10-at-11.25.13

می توانید ببینید که HEAD به کامیت دیگری منتقل شده است. من می دوم git log --oneline دوباره برای دیدن HEAD و سایر تعهدات:

اسکرین شات-2023-04-10-at-11.26.46

نتیجه

این مقاله به شما نشان داد که چگونه با استفاده از آن، پایگاه کد خود را به HEAD و به یک commit خاص بازنشانی کنید git reset --hard HEAD و git reset –hard HEAD@{n} دستورات

آگاه باشید که git reset –hard HEAD یا git reset –hard HEAD@{n} فرمان تغییرات غیرمتعهد شما را حذف می کند، حتی اگر آنها را مرحله بندی کرده باشید. اگر نمی خواهید تغییرات بدون مرحله شما حذف شوند، می توانید از آن استفاده کنید --soft پرچم به جای --hard پرچم.

ممنون که خواندید.