Menu
Coddy logo textTech

Git Reset --hard

עודכן לאחרונה

git reset --hard מעביר את הענף לקומיט יעד ומכריח גם את אזור ההכנה וגם את עץ העבודה להתאים לו בדיוק, תוך מחיקת כל שינוי שלא נשמר בקומיט. זו הצורה ההרסנית ביותר של git reset, אז ודאו שאתם לא צריכים את העבודה הנוכחית לפני שאתם מריצים אותה.

איבדתם קומיט ב-reset בטעות? בדרך כלל אפשר לשחזר אחרי reset --hard בעזרת git reflog. נסו את הפקודות בבטחה בעורך הטרמינל אונליין: shell אמיתי בדפדפן.

git reset --hard מחזיר את HEAD אחורה ומוחק את כל מה שאחריו, כולל אזור ההכנה ועץ העבודה.

תחביר

פקודהמה היא עושה
git reset --hardמחיקת כל השינויים שלא נשמרו בקומיט (נשארים ב-HEAD)
git reset --hard HEAD~1השמטת הקומיט האחרון והשינויים שלו
git reset --hard <hash>החזרת הענף בכוח לקומיט מסוים
git reset --hard origin/mainהתאמה מדויקת של הענף המקומי לענף המרוחק

שחזור אחרי reset --hard

עבודה שנשמרה בקומיט ואיבדתם ב-reset בדרך כלל עדיין ניתנת לשחזור.

שלבפקודהתוצאה
1git reflogהצגת המקומות שבהם HEAD היה, עם hash
2git reset --hard <hash>חזרה לקומיט שלפני ה-reset

שאלות נפוצות על git reset --hard

מה git reset --hard עושה בפועל?
הוא מעביר את הענף הנוכחי לקומיט היעד ודורס גם את אזור ההכנה וגם את עץ העבודה כך שיתאימו לו. כל שינוי שלא נשמר בקומיט, מוכן או לא, נמחק. לעומת --soft (שמשאיר את השינויים מוכנים) ו---mixed (שמשאיר אותם לא מוכנים), --hard הוא המצב היחיד שזורק את השינויים.
איך מוחקים את כל השינויים המקומיים שלי?
הריצו git reset --hard בלי קומיט כדי לאפס את עץ העבודה לקומיט האחרון ולמחוק עריכות שלא נשמרו בקומיט. כדי לנקות גם קבצים שלא במעקב, ש-reset לא נוגע בהם, הריצו אחריו git clean -fd.
איך מאפסים את הענף שלי כך שיתאים לענף המרוחק?
הריצו git fetch ואז git reset --hard origin/main (החליפו בשם הענף שלכם). זה מכריח את הענף המקומי להתאים בדיוק לענף המרוחק, ומוחק קומיטים ושינויים מקומיים שסוטים ממנו: שימושי כשהענף המקומי השתבש ואתם פשוט רוצים את הגרסה המרוחקת.
אפשר לבטל git reset --hard?
עבודה שנשמרה בקומיט בדרך כלל כן: הריצו git reflog כדי למצוא את הקומיט שהענף הצביע עליו לפני ה-reset, ואז git reset --hard <hash> כדי לחזור אליו. שינויים שמעולם לא נשמרו בקומיט (שהיו רק בעץ העבודה) אי אפשר לשחזר, אז התייחסו ל---hard בזהירות.
אפשר לתרגל את זה אונליין?
כן. פתחו את עורך הטרמינל אונליין כדי להריץ git reset --hard ב-shell אמיתי בדפדפן, בלי להתקין כלום. גם קורס ה-Git האינטראקטיבי והחינמי של Coddy מלמד איפוס וביטול שינויים צעד אחר צעד.
איור של שפות התכנות ב-Coddy

ללמוד Git עם Coddy

להתחיל