Git Bisect
עודכן לאחרונה
git bisect מוצא את הקומיט שהכניס באג בעזרת חיפוש בינארי. מציינים קומיט אחד שידוע שעובד וקומיט אחד שידוע ששבור; הפקודה עוברת לקומיט שבאמצע, מסמנים אותו כטוב או כרע, והטווח מצטמצם בחצי בכל פעם. כך מאתרים את האשם בכמה צעדים בלבד, גם מתוך אלפי קומיטים.
נסו את הפקודות האלה בעורך הטרמינל אונליין: shell אמיתי בדפדפן, בלי להתקין כלום.
תחביר
| פקודה | מה היא עושה |
|---|---|
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.
| שלב | פקודה | תוצאה |
|---|---|---|
| 1 | git bisect start | תחילת החיפוש |
| 2 | git bisect bad | הקומיט הנוכחי שבור |
| 3 | git 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 מלמד בדיקת היסטוריה צעד אחר צעד.