אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • קבלו עדכונים במייל
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג’אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • קבלו עדכונים במייל
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג’אווהסקריפט
ראשי » מדריכים » Git » git bisect

git bisect

רן בר-זיק ספטמבר 24, 2017 7:07 am אין תגובות

פיצ׳ר של גיט שמאפשר לנו להבין מה השתבש בגרסה שלנו בקלות

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט. הפרויקט הוא הפרויקט הספרותי המוביל בהדסטארט. בשיתוף הקריה האקדמית אונו.
המאמר הקודם במדריך ה-gitלבטל דברים בגיט אחרי שעשינו push

אחד מהכלים המגניבים ביותר שיש ב-git הוא git bisect. מדובר בכלי שמאפשר לנו לעשות ביעילות ‘אריה במדבר’. מה הכוונה? מדובר בשיטת פתרון באגים, בדרך כלל באגים שהם ריגרסיה (משהו שעבד בעבר ולא עובד היום). בדרך כלל, הדרך המהירה ביותר למצוא פתרון לבאג כזה הוא למצוא גרסה קדומה שבה הוא עבד ולהתקדם בגרסאות על מנת לראות מתי הבאג נדפק.

בואו ונניח שיש לי אתר כלשהו שיש בו פיצ’ר שעבד בעבר וכיום לא עובד. אני נמצא על branch שנקרא master. הגרסה האחרונה לא עובדת. אך כשאני חוזר לגרסה קדומה יותר, באמצעות הפקודה

git checkout HASHNUMBER

כאשר ה- HASHNUMBER זה בעצם שם ה-Push האחרון, אז אני רואה שבגרסה הקדומה יותר הפיצ’ר עובד כמו שצריך. כלומר איפושהו בין הגרסה החדשה ביותר לגרסה הקדומה, משהו השתבש.

דוגמה של לוג גיט, הגרסה הנוכחית לא תקינה ומכילה באג כלשהו. איתרתי גרסה קדומה יותר שעובדת
דוגמה של לוג גיט, הגרסה הנוכחית לא תקינה ומכילה באג כלשהו. איתרתי גרסה קדומה יותר שעובדת

כלומר בדוגמה הזו, אם אני עושה

 git checkout 588fba7

אני אחזור לגרסה קדומה בקוד ואעלה את המוצר ואראה שהפיצ’ר המקולקל עובד כמצופה. כמובן שחסרים המון פיצ’רים שפותחו ונדחפו מאז ועד עכשיו, אבל זה עובד. אני יכול להריץ git diff בין הגרסה שעובדת לגרסה הנוכחית, אבל בדרך כלל יש שינויים ממש ממש גדולים בקוד. מה שאני צריך זה את הגרסה האחרונה שעבדה. כך אני יכול להשוות בינה לבין הגרסה הראשונה שלא עבדה ולראות ממש בקלות מה נשבר.

מה שחלק גדול מהמתכנתים עושים זה להתקדם אחורה לאט לאט ולבדוק בכל פעם את הבאג. זו דרך לא יעילה. מתכנתים אחרים ישתמשו בשיטת ‘אריה במדבר’ – הם ילכו על גרסה כלשהי באמצע וינסו לצמצם את הטווח. אבל יש שיטה יותר טובה ואוטומטית שנקראת git bisect. השיטה היא פשוטה ביותר. יש לנו את git bisect שהשימוש הבסיסי בה הוא:

git bisect start BADCOMMIT GOODCOMMIT

כאשר BADCOMMIT זה ה-hash של הגרסה שלא עובדת. אם זו הגרסה החדשה ביותר של ה-master אז נקרא לה master (או בשם הענף). ה-GOODCOMMIT היא גרסה מסוימת שבה הפיצ’ר עובד.

למשל:

git bisect start master 588fba7

ברגע שאני מתחיל את תהליך ה-bisect, גיט מנסה למצוא את הגרסה הגרועה. היא עוברת אוטומטית לגרסה כלשהי נמצאת בין הגרסה הטובה הידועה לגרסה הרעה הידועה ושואלת אותי אם הפיצ’ר עובד. במידה ולא, אני כותב

git bisect bad

במידה וכן, אני כותב:

git bisect good

גיט תמשיך לשנות את הגרסאות עד שהיא תמצא את הגרסה שבה הפיצ’ר נהרס.

תהליך של git bisect. בכל פעם אני צריך לכתוב git bisect good או git bisect bad - תלוי אם הפיצ'ר עובד או לא. המטרה: למצוא את הגרסה הראשונה שלא עבדה
תהליך של git bisect. בכל פעם אני צריך לכתוב git bisect good או git bisect bad – תלוי אם הפיצ’ר עובד או לא. המטרה: למצוא את הגרסה הראשונה שלא עבדה

ברגע שהגרסה הראשונה שלא עבדה נמצאה – אני יכול לעשות diff בקלות בינה לבין הגרסה שבאה אחריה ולראות מה השתבש. בכל רגע נתון אני יכול לצאת מה-bisect באמצעות:

git bisect reset

אריה במדבר היא לא דרך ממש יעילה למצוא באגים אבל לפעמים היא דרך פשוטה מספיק. במקרה הזה, git bisect מאוד יקל על התהליך כיוון שגיט משתמשת בדרך היעילה ביותר ‘לחתוך’ את המדבר. כמובן שהמשק הנוח גם מונע טעויות אנוש. מומלץ להכיר וגם להשתמש.

מדריך הגיט
כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט. הפרויקט הוא הפרויקט הספרותי המוביל בהדסטארט. בשיתוף הקריה האקדמית אונו.
git

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

    הפרויקטים שאני כותב ושוחררו לציבור ברישיון קוד פתוח נמצאים ברובם בגיטהאב.
המאמרים האחרונים שהתפרסמו באינטרנט ישראל
  • רספברי פיי כשרת אינטרנט ביתי המאחסן וורדפרס

    רספברי פיי כשרת אינטרנט ביתי המאחסן וורדפרס

    דצמבר 27, 2020
    התקנת אתר אינטרנט מבוסס וורדפרס בשרת ביתי קטן ונחמד על רספברי פיי.
  • ניתוקים ואיטיות באינטרנט – מה עושים?

    ניתוקים ואיטיות באינטרנט – מה עושים?

    דצמבר 20, 2020
    שוב פעם אייקון הטעינה? צווחות מכל פינה בבית וטענות על ניתוקים? מאיפה מתחילים לטפל בזה? כך בודקים את העניין.
  • איך שומרים על הפרטיות: מדריך מעשי

    איך שומרים על הפרטיות: מדריך מעשי

    דצמבר 13, 2020
    מערכת של המשטרה מאפשרת לה לבצע מעקב אחרי כל אחד או לחסום גישה של מטרות לאתרים ובקלות - כך חוסמים את המעקב ומגינים על עצמכם.
חיפוש
הצטרפו לעדכונים!

העדכונים נשלחים אך ורק כאשר האתר מתעדכן.

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד