بازگردانی تغییرات
گیت روشهای مختلفی برای بازگردانی تغییرات دارد. انتخاب روش درست به وضعیت فایلها و هدف شما بستگی دارد.
بازگردانی فایلهای تغییریافته (هنوز استیج نشده)
برای دورانداختن تغییرات یک فایل و برگرداندن آن به آخرین کامیت:
git restore نامفایل
یا با روش قدیمیتر:
git checkout -- نامفایل
توجه: این دستور تغییرات استیجنشده را برای همیشه از بین میبرد.
خارجکردن فایل از staging (unstage)
اگر فایلی را با git add استیج کردید و میخواهید آن را از staging خارج کنید:
git restore --staged نامفایل
یا با روش قدیمی:
git reset HEAD نامفایل
بازگردانی با git reset
دستور reset اشارهگر HEAD را به یک کامیت قبلی میبرد. این دستور سه حالت دارد:
–soft
فقط HEAD را جابجا میکند. تغییرات در staging باقی میمانند:
git reset --soft HEAD~1
کاربرد: وقتی میخواهید آخرین کامیت را لغو کنید اما تغییرات را نگه دارید و دوباره کامیت کنید.
–mixed (پیشفرض)
HEAD را جابجا میکند و staging را پاک میکند، اما تغییرات در فایلها باقی میمانند:
git reset HEAD~1
–hard
HEAD را جابجا میکند و تمام تغییرات را از بین میبرد:
git reset --hard HEAD~1
هشدار: تغییرات ثبتنشده برای همیشه از بین میروند.
بازگردانی با git revert
برخلاف reset که تاریخچه را تغییر میدهد، دستور revert یک کامیت جدید میسازد که اثر یک کامیت قبلی را خنثی میکند:
git revert هشکامیت
این روش برای بازگردانی تغییراتی که قبلاً به ریموت push شدهاند توصیه میشود، چون تاریخچه را خراب نمیکند.
برای revert بدون باز شدن ویرایشگر:
git revert --no-edit هشکامیت
مقایسه reset و revert
| دستور | تاریخچه | کاربرد |
|---|---|---|
reset | تاریخچه را تغییر میدهد | برای کامیتهای محلی که push نشدهاند |
revert | کامیت جدید میسازد | برای کامیتهایی که push شدهاند |
برگشتن به وضعیت یک کامیت قدیمی
برای نگاه کردن به وضعیت پروژه در یک کامیت خاص (بدون تغییر دادن چیزی):
git checkout هشکامیت
برای برگشتن به وضعیت جاری:
git switch -