Git Bisect
آخر تحديث
يعثر git bisect على الـ commit الذي أدخل خطأً عن طريق البحث الثنائي. تخبره بـ commit معروف بأنه سليم وآخر معروف بأنه معطوب؛ فيسحب commit في منتصف المسافة، وتضع عليه وسم good أو bad، ويقلّص النطاق إلى النصف في كل مرة - فيحدّد المسبّب في خطوات قليلة حتى عبر آلاف الـ commits.
جرّب هذه الأوامر في ساحة الطرفية - صدفة حقيقية في متصفحك، دون تثبيت أي شيء.
الصياغة
| Command | What it does |
|---|---|
git bisect start | يبدأ جلسة bisect |
git bisect bad | يضع وسم معطوب على الـ commit الحالي |
git bisect good <hash> | يضع وسمًا على commit معروف بأنه سليم |
git bisect good / git bisect bad | يضع وسمًا على كل commit تم اختباره |
git bisect run ./test.sh | الأتمتة: يشغّل اختبارًا لوسم كل خطوة |
git bisect reset | ينهي bisect، ويعيدك إلى فرعك |
مثال تطبيقي
اعثر على الـ commit الذي أعطب عملية البناء.
| Step | Command | Result |
|---|---|---|
| 1 | git bisect start | يبدأ البحث |
| 2 | git bisect bad | الـ commit الحالي معطوب |
| 3 | git bisect good v1.0 | هذا الوسم القديم كان يعمل |
| 4 | اختبر ثم good/bad | كرّر حتى يسمّي Git الـ commit |
الأسئلة الشائعة حول git bisect
ماذا يفعل git bisect؟
يُجري بحثًا ثنائيًا في سجل الـ commits لديك للعثور على الـ commit الدقيق الذي أدخل خطأً. تضع وسم good على commit وbad على آخر؛ ويسحب Git نقطة المنتصف مرارًا لتختبرها، مقلّصًا نطاق البحث إلى النصف في كل مرة حتى يحدّد أول commit معطوب.
كيف أستخدم git bisect؟
شغّل
git bisect start، وضع وسم الحالة المعطوبة الحالية بـ git bisect bad، وضع وسم commit معروف بأنه يعمل بـ git bisect good <hash>. يسحب Git نقطة منتصف؛ اختبرها وشغّل git bisect good أو git bisect bad. كرّر حتى يُبلّغ Git عن أول commit معطوب، ثم شغّل git bisect reset.هل يمكنني أتمتة git bisect؟
نعم. يشغّل
git bisect run <script> سكربتك في كل خطوة - وينبغي أن يخرج السكربت بالقيمة 0 لـ commit سليم وبقيمة غير صفرية لـ commit معطوب (مشغّلات الاختبارات تناسب ذلك جيدًا). عندها يُجري Git الـ bisect تلقائيًا دون أن تضع وسمًا على كل commit يدويًا، ويطبع الـ commit المسبّب في النهاية.كيف أنهي عملية bisect؟
شغّل
git bisect reset لإنهاء الجلسة والعودة إلى الفرع والـ commit اللذين كنت عليهما قبل أن تبدأ. افعل ذلك سواء عثرت على الـ commit المعطوب أم لا - فهو ينظّف حالة bisect المؤقتة.هل يمكنني التدرّب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل
git bisect في صدفة حقيقية داخل متصفحك - دون تثبيت أي شيء. كما يغطّي كورس Git التفاعلي المجاني من Coddy فحص السجل خطوة بخطوة.