Git Undo Last Commit: ביטול הקומיט האחרון
עודכן לאחרונה
כדי לבטל את הקומיט האחרון, החליטו מה יקרה לשינויים שלו. השאירו אותם מוכנים עם git reset --soft HEAD~1, השאירו אותם לא מוכנים עם git reset HEAD~1 פשוט, או זרקו אותם עם git reset --hard HEAD~1. אם הקומיט שגוי רק במעט, git commit --amend מתקן אותו במקום. אם הוא כבר נדחף, השתמשו ב-git revert במקום לשכתב היסטוריה. כדי לבטל קומיט ישן יותר או כמה בבת אחת, ראו את העמוד על git undo commit.
נסו את הפקודות האלה בעורך הטרמינל אונליין: shell אמיתי בדפדפן, בלי להתקין כלום.
בחרו מה לעשות עם השינויים
| מטרה | פקודה |
|---|---|
| ביטול הקומיט, השינויים נשארים מוכנים | git reset --soft HEAD~1 |
| ביטול הקומיט, השינויים נשארים לא מוכנים | git reset HEAD~1 |
| ביטול הקומיט ומחיקת השינויים | git reset --hard HEAD~1 |
| תיקון הקומיט האחרון (הודעה או קבצים) | git commit --amend |
| ביטול קומיט שכבר דחפתם | git revert HEAD |
דוגמה מלאה
ביטול הקומיט האחרון ויצירתו מחדש עם הודעה טובה יותר.
| שלב | פקודה | תוצאה |
|---|---|---|
| 1 | git reset --soft HEAD~1 | הקומיט הוסר, השינויים נשארים מוכנים |
| 2 | git commit -m "clearer message" | קומיט מחדש של אותם שינויים |
שאלות נפוצות על ביטול הקומיט האחרון ב-Git
איך מבטלים את הקומיט האחרון אבל שומרים את השינויים?
הריצו
git reset --soft HEAD~1. זה מסיר את הקומיט האחרון אבל משאיר את השינויים שלו מוכנים, כך שאפשר ליצור מהם קומיט מחדש מיד. כדי שהשינויים יישארו בעץ העבודה כלא מוכנים, השתמשו ב-git reset HEAD~1 (מצב ברירת המחדל).איך מבטלים את הקומיט האחרון ומוחקים את השינויים?
הריצו
git reset --hard HEAD~1. זה מסיר את הקומיט ומוחק את השינויים שלו מעץ העבודה. הפעולה הרסנית: אם ייתכן שתצטרכו את העבודה, השתמשו ב---soft במקום, או שחזרו מאוחר יותר עם git reflog.מה אם צריך לתקן רק את הודעת הקומיט?
השתמשו ב-
git commit --amend. הוא פותח מחדש את הקומיט האחרון כדי שתוכלו לערוך את ההודעה שלו (ולהכין שוב קבצים אם צריך) בלי ליצור קומיט נפרד. הימנעו מ-amend לקומיט שכבר דחפתם, כי זה משכתב היסטוריה.איך מבטלים את הקומיט האחרון אחרי שדחפתי אותו?
השתמשו ב-
git revert HEAD. revert יוצר קומיט חדש שהופך את האחרון ומשאיר את ההיסטוריה שלמה: הבחירה הבטוחה לענפים משותפים. reset לקומיט שנדחף מאלץ את כל השאר ליישב ענף שנכתב מחדש.אפשר לתרגל את זה אונליין?
כן. פתחו את עורך הטרמינל אונליין כדי להריץ את הפקודות האלה ב-shell אמיתי בדפדפן, בלי להתקין כלום. גם קורס ה-Git האינטראקטיבי והחינמי של Coddy מלמד ביטול שינויים צעד אחר צעד.