Menu
Coddy logo textTech

Git Revert

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

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

נסו את הפקודות האלה בעורך הטרמינל אונליין: shell אמיתי בדפדפן, בלי להתקין כלום.

git revert משאיר את הקומיט הבעייתי במקומו ומוסיף קומיט חדש שמבטל אותו; ההיסטוריה אף פעם לא נכתבת מחדש.

תחביר

פקודהמה היא עושה
git revert HEADביטול הקומיט האחרון
git revert <hash>ביטול קומיט מסוים לפי hash
git revert HEAD~2..HEADביטול טווח קומיטים
git revert -n <hash>ביטול בלי ליצור קומיט עדיין (רק הכנה)
git revert -m 1 <merge-hash>ביטול קומיט מיזוג תוך שמירה על הורה 1

במהלך revert

אם ה-revert נתקל בקונפליקט, פתרו אותו והמשיכו.

פקודהמה היא עושה
git revert --continueהמשך אחרי פתרון קונפליקטים
git revert --abortביטול ה-revert שבתהליך
git revert --skipדילוג על הקומיט הנוכחי והמשך

revert מול reset

התנהגותgit revertgit reset
משכתב היסטוריהלאכן
בטוח לקומיטים שנדחפוכןלא
יוצר קומיט חדשכןלא
מבטל קומיט מאמצע ההיסטוריהכןמסורבל

שאלות נפוצות על git revert

מה ההבדל בין git revert לבין git reset?
git revert מוסיף קומיט חדש שמבטל את השינויים של קומיט קודם ומשאיר את ההיסטוריה שלמה: בטוח לקומיטים שכבר דחפתם. git reset מזיז את מצביע הענף אחורה ומשכתב היסטוריה, וזה בסדר לקומיטים מקומיים אבל מסוכן בענפים משותפים. השתמשו ב-revert כדי לבטל קומיטים ציבוריים, וב-reset כדי לבטל קומיטים מקומיים.
איך מבטלים קומיט שכבר נדחף?
הריצו git revert <hash> (או git revert HEAD לקומיט האחרון), ואז דחפו את קומיט ה-revert החדש. מכיוון ש-revert לא משכתב היסטוריה, זו הדרך הנכונה לבטל קומיט משותף: בלי force push ובלי לשבש את העבודה של חברי צוות שכבר משכו אותו.
איך מבטלים קומיט מיזוג?
לקומיט מיזוג יש שני הורים, ולכן Git צריך לדעת איזה קו היסטוריה לשמור. השתמשו ב-git revert -m 1 <merge-hash>, כאשר -m 1 אומר ל-Git לשמור את ההורה הראשון (בדרך כלל הענף שאליו מיזגתם). ביטול מיזוג מבטל את השינויים שמוזגו, אבל המיזוג עצמו נשאר בהיסטוריה.
אפשר לבטל כמה קומיטים בבת אחת?
כן. העבירו טווח כמו git revert HEAD~2..HEAD כדי לבטל את שני הקומיטים האחרונים, או פרטו כמה hash. כברירת מחדל Git יוצר קומיט revert אחד לכל קומיט שבוטל; הוסיפו -n כדי להכין את כל הביטולים בלי ליצור קומיט, ואז צרו קומיט אחד בעצמכם.
אפשר לתרגל את זה אונליין?
כן. פתחו את עורך הטרמינל אונליין כדי להריץ git revert ב-shell אמיתי בדפדפן, בלי להתקין כלום. גם קורס ה-Git האינטראקטיבי והחינמי של Coddy מלמד ביטול שינויים צעד אחר צעד.
איור של שפות התכנות ב-Coddy

ללמוד Git עם Coddy

להתחיל