راهنمای گیت

بازگردانی تغییرات

گیت روش‌های مختلفی برای بازگردانی تغییرات دارد. انتخاب روش درست به وضعیت فایل‌ها و هدف شما بستگی دارد.

بازگردانی فایل‌های تغییریافته (هنوز استیج نشده)

برای دورانداختن تغییرات یک فایل و برگرداندن آن به آخرین کامیت:

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 -