לבטל טעויות בבטחה: restore, reset, revert, reflog
החדשות הכי מרגיעות בכל הקורס: Git כמעט אף פעם לא מאבד את העבודה שלך באמת. כמעט כל טעות הפיכה, אם יודעים איזה כלי לשלוף. בשיעור הזה נבנה ארגז שחזור קטן וברור עם ארבעה כלים, ולכל אחד נצמיד 'מתי': git restore לזרוק שינוי שעוד לא נשמר, git reset להזיז את הענף אחורה (ולשים לב לסכנה של --hard), git revert
restore הוא 'בטל את מה שאני עורך/ת עכשיו'. reset הוא 'קח אותי אחורה בזמן' (ו--hard גם מוחק, אז זהירות). revert הוא 'הוסף דף שמבטל דף ישן' — בטוח לצוות. reflog הוא מצלמת אבטחה שזוכרת לאן HEAD זז, גם כשנדמה לך שאיבדת עבודה.
- git restore
- מבטל שינויים בתיקיית העבודה (git restore <file>) או מוציא קובץ מ-staging (git restore --staged <file>). לא נוגע בהיסטוריה.
- git reset
- מזיז את ה-HEAD (ואת הענף) ל-commit קודם. --soft שומר את השינויים ב-staging, --hard מוחק גם את שינויי תיקיית העבודה. בטוח על היסטוריה מקומית בלבד.
- git revert
- יוצר commit חדש שמבטל את השינוי של commit קודם, בלי לשכתב היסטוריה. הדרך הבטוחה לבטל משהו שכבר נדחף ושותף.
- git reflog
- יומן מקומי של כל מקום שבו HEAD היה. מאפשר למצוא את ה-hash של commit שנראה 'אבוד' אחרי reset ולשחזר אותו. רשת הביטחון שלך.
- היסטוריה משותפת (shared history)
- commits שכבר נדחפו ושאנשים אחרים אולי משכו. שכתוב שלהם שובר את העותק של הצוות — לכן עליהם משתמשים ב-revert, לא ב-reset --hard.