از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
Git Reset Hard – نحوه بازنشانی به Head در Git
سرفصلهای مطلب
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
:
HEAD
همچنین می تواند برای اشاره به وضعیت دایرکتوری کاری فعلی استفاده شود. به عنوان مثال، اگر تغییراتی را در فایلهای موجود در فهرست کاری خود ایجاد کردهاید، اما آنها را متعهد نکردهاید، میتوانید از دستور استفاده کنید git diff HEAD
برای مشاهده تفاوت بین دایرکتوری کاری و آخرین commit:
بنابراین، هنگامی که ما در مورد تنظیم مجدد صحبت می کنیم 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
برای نشان دادن سابقه تعهد خود:
اگر یک پایگاه کد بزرگ است و می خواهید جزئیات بیشتری را ببینید، می توانید اجرا کنید git log --oneline --graph
:
این git log --oneline --graph
دستور شامل یک نمایش گرافیکی از تاریخچه commit است. این می تواند به ویژه در تجسم سناریوهای انشعاب و ادغام پیچیده مفید باشد.
در دو تصویر بالا، HEAD
هش commit است d8cd0ee
، با پیام commit Linked JavaScript file
. این تعهد قبلی است که انجام دادم.
برای بازنشانی کد پایه به آن commit، اجرا می کنم git reset --hard HEAD
:
می بینید که من پاسخ را دریافت کردم HEAD is now at d8cd0ee Linked JavaScript file
– همانطور که در اسکرین شات نیز مشاهده می کنید.
این git reset --hard HEAD
فرمان تمام تغییرات غیرمتعهد را حذف می کند حتی اگر آنها را به قسمت مرحله بندی اضافه کرده باشید.
چگونه با دستور Git Reset به یک Commit خاص بازنشانی کنیم
به غیر از تنظیم مجدد به HEAD
خود، شما همچنین می توانید به یک commit خاص بازنشانی کنید.
اول، اجرا کنید git reflog
برای دیدن اینکه چگونه هر commit با HEAD
:
اکنون می توانید اجرا کنید git reset --hard HEAD@{n}
برای بازگشت به یک تعهد خاص به عنوان مثال، من می خواهم به پیام commit برگردم Linked CSS file
. بنابراین، من فرار می کنم git reset --hard HEAD@{5}
برای بازگشت به آن تعهد:
می توانید ببینید که HEAD
به کامیت دیگری منتقل شده است. من می دوم git log --oneline
دوباره برای دیدن HEAD
و سایر تعهدات:
نتیجه
این مقاله به شما نشان داد که چگونه با استفاده از آن، پایگاه کد خود را به HEAD و به یک commit خاص بازنشانی کنید git reset --hard HEAD
و git reset –hard HEAD@{n}
دستورات
آگاه باشید که git reset –hard HEAD
یا git reset –hard HEAD@{n}
فرمان تغییرات غیرمتعهد شما را حذف می کند، حتی اگر آنها را مرحله بندی کرده باشید. اگر نمی خواهید تغییرات بدون مرحله شما حذف شوند، می توانید از آن استفاده کنید --soft
پرچم به جای --hard
پرچم.
ممنون که خواندید.
منتشر شده در 1402-12-26 10:36:06