تاریخچه، تفاوت‌ها و برگشت از اشتباه

با diff و log کار کنی و بدانی restore، revert و reset چه فرقی دارند.

14 دقیقه مطالعه · 4 سؤال تمرینی · Git و GitHub برای شروع کار تیمی

دیدن تغییرها

git diff                # تغییرات هنوز staged نشده
git diff --staged       # تغییرات staged
git log --oneline --graph --all   # نمای گرافیکی تاریخچه
git show <commit>       # جزئیات یک commit

برگشت از اشتباه بسته به اینکه کار کجاست فرق می‌کند:

| وضعیت | دستور | |---|---| | تغییر هنوز commit نشده و می‌خواهید دور بریزید | git restore file | | فایل را اشتباهی add کردید | git restore --staged file | | commit اشتباه را با ثبت یک commit معکوس خنثی کنید (امن برای تاریخچه‌ی مشترک) | git revert <commit> | | آخرین commit محلی را بردارید ولی تغییرات بماند | git reset --soft HEAD~1 | | آخرین commit محلی و تغییراتش را کاملاً دور بریزید (خطرناک) | git reset --hard HEAD~1 |

قاعده‌ی طلایی: روی commit‌هایی که قبلاً به دیگران push کرده‌اید، تاریخچه را بازنویسی نکنید (reset/rebase)؛ از revert استفاده کنید.

تمرین‌های این درس را حل کن (رایگان)