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

Git bisect
ابزاری قدرتمند است که به شما در یافتن تعهد دقیق در جایی که یک اشکال در پایگاه کد شما معرفی شده است ، کمک می کند. از a استفاده می کند جستجوی دودویی الگوریتم برای محدود کردن سریع تعهد مشکل ساز.
چگونه git bisect کار می کند
تصور کنید که یک پروژه با 100 تعهد دارید. شما می دانید که:
- در تعهد شماره 1 ، این ویژگی خوب کار کرد.
- در تعهد شماره 100 ، این ویژگی خراب است.
git bisect will:
- تعهد میانی (شماره 50) را بررسی کنید.
- از شما بخواهید که آیا این اشکال در آنجا وجود دارد یا خیر.
- بر اساس پاسخ شما ، سپس #25 یا #75 را بررسی می کند.
- این فرآیند را تکرار کنید تا زمانی که اشکال در آن ظاهر شود ، تعهد دقیقی پیدا کند.
مثال استفاده اساسی
بیایید یک مثال عملی را طی کنیم:
- جلسه بیسیک را شروع کنید:
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 متصل شویم