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

git bisect

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

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

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

אפשר ללמוד גיט יותר טוב

ספר מקיף על גיט, בעברית, שנכתב על ידי רן בר-זיק וכולל תרגילים רבים ומידע מקיף - כולל הסבר על תרומה לפרויקטים של קוד פתוח ושילוב של התרומה בקורות החיים ניתן להורדה ממש פה.
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

אחד מהכלים המגניבים ביותר שיש ב-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 ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
מדריך הגיט
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

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

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

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

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