چگونه آخرین commit را لغو کنیم؟
قبل از اینکه از سلاح های بزرگ استفاده کنیم بهتر است مطمئن بشیم که به اون ها نیاز داریم. در مواردی که شما فقط نیاز به ویرایش آخرین commit دارید خیلی ساده می توانید از امکان git amend استفاده کنید. این دستور به شما اجازه می دهد پیام آخرین commit خود را اصلاح کنید بعلاوه اینکه تغییرات بیشتری را نیز به اون اضافه کنید. اگر فقط در همین حد نیاز دارید این مقاله رو مطالعه کنید.
لغو کردن آخرین commit
به هر حال البته که موارد بسیار زیادی وجود داره که شما واقعا قصد دارید آخرین commit رو لغو کنید. مثلا به این خاطر که شما قصد دارید تغییرات گسترده ای بدید یا اینکه کلا بخواید بیخیال همه تغییراتی که دادید بشید.
در این موارد از دستور reset استفاده می کنیم:
git reset --soft HEAD~1
reset برنچ head جاری را به نسخه مشخص شده بر می گردونه. در مثال بالا، ما می خوایم به یک نسخه قبل بر گردیم و آخرین commit خودمون رو لغو کنیم.
فلگ --soft: این فلگ تضمین می کند که تغییرات در نسخه های لغو شده حفظ می شوند. بعد از اجرای دستور تغییرات به صورت uncommit شده در source code شما ظاهر میشن.
اگر شما نمی خواید این تغییرات رو حفظ کنید خیلی ساده از فلگ --hard استفاده کنید. حواستون باشه از این روش فقط زمانی استفاده کنید که مطمئن هستید نیازی به حفظ کپی از تغییراتی که انجام دادید ندارید.
git reset --hard HEAD~1
لغو کردن چند commit
تکنیک مشابهی به شما اجازه می دهد تا به یک نسخه مشخص قبلی برگردید.
git reset --hard 0ad5a7a6
همیشه به یاد داشته باشید که استفاده از دستور reset همه کامیت هایی که بعد از نسخه مشخص شده ثبت شده اند را reset خواهد کرد.
منبع: https://www.git-tower.com/learn/git/faq/undo-last-commit