Git Reflog
עודכן לאחרונה
git reflog מתעד כל מקום ש-HEAD הצביע עליו: כל קומיט, checkout, reset ו-rebase. מכיוון ש-Git שומר את הקומיטים האלה עוד זמן מה גם אחרי שהם יוצאים מהענפים שלכם, ה-reflog הוא רשת הביטחון שלכם: הוא מאפשר למצוא ולשחזר עבודה ש-reset --hard, rebase שהשתבש או ענף שנמחק נראו כאילו השמידו.
נסו את הפקודות האלה בעורך הטרמינל אונליין: shell אמיתי בדפדפן, בלי להתקין כלום.
תחביר
| פקודה | מה היא עושה |
|---|---|
git reflog | הצגת המיקומים האחרונים של HEAD, עם hash |
git reflog show <branch> | הצגת ה-reflog של ענף |
git reset --hard HEAD@{1} | החזרת HEAD למיקום קודם |
git branch recovered <hash> | יצירה מחדש של ענף על קומיט שאבד |
שחזור אחרי טעות
ביטול reset שגוי על ידי מציאת הקומיט שלפני ה-reset.
| שלב | פקודה | תוצאה |
|---|---|---|
| 1 | git reflog | מציאת הקומיט שלפני ה-reset |
| 2 | git reset --hard HEAD@{1} | החזרת הענף אליו |
שאלות נפוצות על git reflog
מה זה git reflog?
HEAD (וקצה כל ענף) הצביעו עליהם במאגר המקומי: אחרי קומיטים, checkouts, resets, מיזוגים ו-rebases. בניגוד ל-git log, שעוקב אחרי שושלת הקומיטים, ה-reflog הוא תיעוד כרונולוגי של הפעולות שלכם, וזה מה שהופך אותו לשימושי לשחזור.איך משחזרים קומיט אחרי git reset --hard?
git reflog כדי למצוא את הרשומה של הקומיט שהייתם עליו לפני ה-reset (משהו כמו HEAD@{1}), ואז git reset --hard <that-hash> (או HEAD@{1}) כדי לחזור אליו. הקומיט לא באמת נמחק: פשוט אף ענף לא הצביע עליו, וה-reflog עדיין זוכר את ה-hash שלו.איך משחזרים ענף שנמחק?
git reflog, ואז צרו מחדש את הענף שם: git branch <name> <hash>. כל עוד המחיקה הייתה לאחרונה (בתוך תקופת התפוגה של ה-reflog, בדרך כלל כמה שבועות), הקומיטים עדיין נגישים בדרך הזו.האם git reflog עובד בין עותקים משוכפלים?
אפשר לתרגל את זה אונליין?
git reflog ב-shell אמיתי בדפדפן, בלי להתקין כלום. גם קורס ה-Git האינטראקטיבי והחינמי של Coddy מלמד ביטול שינויים ושחזור צעד אחר צעד.