Menu
Coddy logo textTech

Git Bisect

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

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

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

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

תחביר

פקודהמה היא עושה
git bisect startהתחלת סשן bisect
git bisect badסימון הקומיט הנוכחי כרע
git bisect good <hash>סימון קומיט שידוע שהוא טוב
git bisect good / git bisect badסימון כל קומיט שנבדק
git bisect run ./test.shאוטומציה: הרצת בדיקה שמסמנת כל צעד
git bisect resetסיום ה-bisect וחזרה לענף שלכם

דוגמה מלאה

מציאת הקומיט ששבר את ה-build.

שלבפקודהתוצאה
1git bisect startתחילת החיפוש
2git bisect badהקומיט הנוכחי שבור
3git bisect good v1.0התגית הישנה הזו עבדה
4בדיקה, ואז good/badחוזרים על כך עד ש-Git מצביע על הקומיט

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

מה git bisect עושה?
הוא מבצע חיפוש בינארי בהיסטוריית הקומיטים כדי למצוא את הקומיט המדויק שהכניס באג. מסמנים קומיט אחד כטוב ואחד כרע; Git עובר שוב ושוב לנקודת האמצע כדי שתבדקו אותה, ומצמצם את טווח החיפוש בחצי בכל פעם עד שהוא מזהה את הקומיט הרע הראשון.
איך משתמשים ב-git bisect?
הריצו git bisect start, סמנו את המצב השבור הנוכחי עם git bisect bad וקומיט שעבד עם git bisect good <hash>. Git עובר לנקודת אמצע; בדקו אותה והריצו git bisect good או git bisect bad. חזרו על כך עד ש-Git מדווח על הקומיט הרע הראשון, ואז הריצו git bisect reset.
אפשר להפוך את git bisect לאוטומטי?
כן. git bisect run <script> מריץ את הסקריפט שלכם בכל צעד: הסקריפט צריך לצאת עם 0 עבור קומיט טוב ועם ערך שונה מ-0 עבור קומיט רע (מריצי בדיקות מתאימים לכך היטב). Git מבצע אז את ה-bisect אוטומטית, בלי שתצטרכו לסמן כל קומיט ידנית, ובסוף מדפיס את הקומיט הבעייתי.
איך מסיימים bisect?
הריצו git bisect reset כדי לסיים את הסשן ולחזור לענף ולקומיט שבהם הייתם לפני שהתחלתם. עשו זאת בין אם מצאתם את הקומיט הרע ובין אם לא: זה מנקה את מצב ה-bisect הזמני.
אפשר לתרגל את זה אונליין?
כן. פתחו את עורך הטרמינל אונליין כדי להריץ git bisect ב-shell אמיתי בדפדפן, בלי להתקין כלום. גם קורס ה-Git האינטראקטיבי והחינמי של Coddy מלמד בדיקת היסטוריה צעד אחר צעד.
איור של שפות התכנות ב-Coddy

ללמוד Git עם Coddy

להתחיל