چطور (تقریباً) هر چیزی را در git به حالت قبلی برگردانیم؟ قسمت اول
یک راهنما برای بازگشت از همه اشتباهاتی که ممکن است در استفاده از گیت بهشون برخورد کنیم.
این نوشته ترجمه خلاصه شدهای است از How to undo (almost) anything with Git که در وبلاگ گیتهاب انتشار یافته است و از سهیل رشیدی برای معرفی آن در خبرنامه iDevCenter تشکر میکنیم.
undo کردن تغییر عمومی (Public)
سناریو: شما از دستور git push
استفاده کردید و تغییرات را به گیتهاب فرستادید و حالا متوجه شدید که یکی از commit ها مشکلی دارد، میخواهید آن commit را undo کنید.
دستور Undo: برای سناریو بالا از دستور زیر استفاده کنید:
git revert <SHA>;
تعمیر توضیح آخرین commit
سناریو: در آخرین commit اشتباه تایپی دارید، دستور شما مثلاً git commit -m "Fxies bug #42"
بوده است اما قبل از git push
متوجه شدید که Fixes اشتباه تایپ شده است.
دستور Undo: برای سناریو بالا از دستور زیر استفاده کنید:
git commit --amend or git commit --amend -m "Fixes bug #42"
Undo کردن تغییرات محلی (local changes)
سناریو: گربهای روی کیبورد راه رفته و تغییرات ایجاد شده هم به شکلی ذخیره شدهاند.، بعد ادیتور هم crash کرده است. شما این تغییرات را commit نکردهاید و میخواهید فایل را به حالت قبلیاش (آخرین commit) برگردانید.
دستور Undo: برای سناریو بالا از دستور زیر استفاده کنید
git checkout -- <badfilename>;
به یاد داشته باشید هر تغییری که به این شیوه Undo میکنید واقعاً از بین خواهد رفت. در واقع تغییرات در این حالت هیچ وقت commit نمیشوند و لذا git در بازیابی آنها به ما کمکی نخواهد کرد. بنابراین پیش از استفاده از این دستور، مطمئن شوید میدانید چه چیزهایی را دور میریزید. از git diff استفاده کنید تا مطمئن شوید کارتان برای undo کردن درست است
پینوشت: به خاطر طولانی بودن مطلب اصلی، ترجمه آن در قالب چند نوشته مجزا منتشر خواهد شد