برنامه نویسی

روز 4/30 – Git Bisect توضیح داد: تعهدی را پیدا کنید که کد شما را شکست

Git bisect ابزاری قدرتمند است که به شما در یافتن تعهد دقیق در جایی که یک اشکال در پایگاه کد شما معرفی شده است ، کمک می کند. از a استفاده می کند جستجوی دودویی الگوریتم برای محدود کردن سریع تعهد مشکل ساز.

چگونه git bisect کار می کند

تصور کنید که یک پروژه با 100 تعهد دارید. شما می دانید که:

  • در تعهد شماره 1 ، این ویژگی خوب کار کرد.
  • در تعهد شماره 100 ، این ویژگی خراب است.

git bisect will:

  1. تعهد میانی (شماره 50) را بررسی کنید.
  2. از شما بخواهید که آیا این اشکال در آنجا وجود دارد یا خیر.
  3. بر اساس پاسخ شما ، سپس #25 یا #75 را بررسی می کند.
  4. این فرآیند را تکرار کنید تا زمانی که اشکال در آن ظاهر شود ، تعهد دقیقی پیدا کند.

مثال استفاده اساسی

بیایید یک مثال عملی را طی کنیم:

  • جلسه بیسیک را شروع کنید:
git bisect start
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • تعهد فعلی را به عنوان بد علامت گذاری کنید (جایی که اشکال وجود دارد):
git bisect bad
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • یک تعهد قدیمی را به عنوان خوب علامت گذاری کنید (جایی که اشکال وجود ندارد):
git checkout 
git bisect good
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یا مراحل 2 و 3 را در یک دستور ترکیب کنید:

git bisect start  
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • GIT اکنون در وسط یک تعهد را پرداخت می کند. کد خود را آزمایش کنید تا ببینید که آیا این اشکال وجود دارد:

اگر اشکال وجود داشته باشد:

git bisect bad
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اگر اشکال وجود نداشته باشد:

git bisect good
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • مرحله 4 را تکرار کنید تا GIT اولین تعهد بد را مشخص کند.

  • پس از اتمام ، مخزن خود را مجدداً تنظیم کنید:

git bisect reset
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پشت صحنه

بهترین نکات و ترفندها

  • تست خودکار: به جای آزمایش دستی هر تعهد ، می توانید یک اسکریپت ارائه دهید:

یک اسکریپت تست ایجاد کنید:

#!/usr/bin/env python3
import sys
from calculator import calculate  # Our function to test

# Test case - should return 42
result = calculate(40, 2)
expected = 42

if result == expected:
    sys.exit(0)  # Success - mark as good
else:
    sys.exit(1)  # Failure - mark as bad

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

آن را اجرا کنید:

chmod +x test-script.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

فیلمنامه را اجرا کنید:

git bisect run ./test-script.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

توجه: اسکریپت باید برای تعهدات خوب و غیر صفر برای تعهدات بد از 0 خارج شود.

  • تعهدات پرش: اگر تعهد قابل آزمایش نیست (شاید کامپایل نشود) ، آن را پرش کنید:
git bisect skip
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

git bisect log
git bisect visualize
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

git bisect start v2.0.0 v1.9.0
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • تفاوت را بررسی کنید: پس از پیدا کردن تعهد بد ، بررسی کنید که چه چیزی تغییر کرده است:
git show 
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • یافته های اسناد: پس از یافتن تعهد مشکل ساز ، برای اضافه کردن موارد مشابه در آینده ، یک مورد آزمایشی را اضافه کنید.

غذای اصلی:

✅ سریع و کارآمد – به جای بررسی هر تعهد ، Git Bisect هر بار فضای جستجو را نصف می کند.
✅ انعطاف پذیر – با تست دستی یا اسکریپت های خودکار کار می کند (اجرا bisect git).
✅ دقیق – تعهد دقیق را مشخص می کند و درک و رفع مسئله را آسان تر می کند.


بعد: روز 5: git worktree – همزمان روی شاخه های مختلف کار کنید


نکات روزانه پیشرفته در صندوق ورودی شما – شروع کار؟ به نظرسنجی من در اینجا پاسخ دهید
برای نکات و ترفندهای مفیدتر و خلاقانه تر ، بیایید به Medium متصل شویم

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا