Git Bisect لتنقيح الأخطاء
استخدم `git bisect` للعثور بكفاءة على الالتزام المحدد الذي أدخل خطأً، موفرًا وقتًا ثمينًا في تنقيح الأخطاء
Git Bisect لتنقيح الأخطاء درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
العثور على الأخطاء بسرعة باستخدام Git
قد يكون تصحيح الأخطاء صعبًا. فأحيانًا يظهر خطأ ولا تعرف أي تغيير تسبب فيه.
إن git bisect أمر قوي في Git يساعدك على تحديد الـ commit الدقيق الذي أدخل الخطأ. ويستخدم خوارزمية البحث الثنائي لتضييق نطاق آلاف الـ commits بسرعة.
قوة البحث الثنائي
تخيّل أن مشروعك يحتوي على 100 commit، وأن خطأً ظهر في موضع ما بين الأول والأخير. سيكون فحص كل commit يدويًا بطيئًا!
يعمل git bisect مثل لعبة «خمن الرقم»:
- تخبر Git عن commit «سليم» (لم يكن الخطأ موجودًا فيه).
- تخبر Git عن commit «معيب» (الخطأ موجود فيه).
- يختار Git commit يقع تقريبًا في المنتصف ويطلب منك اختباره.
- تضع علامة «سليم» أو «معيب» عليه، فيقسّم Git نطاق البحث إلى النصف.
لنبدأ البحث!
للبدء، عليك إخبار Git بأنك تبدأ جلسة bisect. يهيّئ الأمر التالي العملية:
git bisect start
بعد البدء، ستحدّد commit «معيبًا» معروفًا (يوجد فيه الخطأ) وcommit «سليمًا» معروفًا (من المؤكد أن الخطأ لم يكن موجودًا فيه).
غالبًا ما يكون الـ commit «المعيب» هو HEAD الحالي، وقد يكون الـ commit «السليم» وسم إصدار أقدم أو commit من بضعة أيام مضت.
تحديد حدود الـ commit
بعد بدء git bisect، حدّد نطاق البحث:
- الـ commit المعيب: هو commit تعرف أن الخطأ موجود فيه. استخدم
git bisect bad <commit-hash>أو استخدمgit bisect badببساطة إذا كان هوHEADالحالي. - الـ commit السليم: هو commit تعرف أن الخطأ لم يكن موجودًا فيه. استخدم
git bisect good <commit-hash>.
بعد ذلك، سيجري Git checkout تلقائيًا لـ commit يقع في منتصف هذا النطاق.
الاختبار وتضييق النطاق
بعد تحديد الـ commits السليم والمعيب، سيجري Git checkout تلقائيًا لـ commit يقع في منتصف النطاق. مهمتك هي اختبار الشيفرة في هذا الـ commit الذي تم إجراء checkout له.
- إذا كان الخطأ موجودًا، فاكتب
git bisect bad. - إذا لم يكن الخطأ موجودًا، فاكتب
git bisect good.
بعد ذلك، سيختار Git commit آخر في منتصف النطاق المتبقي. كرّر هذه العملية حتى يعثر Git على أول commit «معيب».
محاكاة إدخال خطأ
لنتخيّل «خطأً» بسيطًا في script. سنحاكي سجل مشروع أُدخل فيه خطأ صغير.
إليك script «السليم» الأولي:
main.sh
#!/bin/bash
echo "Hello from script!"
sum=0
for i in $(seq 1 3); do
sum=$((sum + i))
done
echo "Sum is: $sum"شرح عملي لـ Bisect يدويًا
لنفترض الآن أن commit لاحقًا غيّر الحلقة عن طريق الخطأ إلى seq 1 4، ما جعل المجموع غير صحيح (10 بدلًا من 6).
سنبدأ باستخدام:
git bisect start
ثم نضع علامة «معيب» على HEAD الحالي (حيث يوجد الخطأ):
git bisect bad HEAD
ونضع علامة «سليم» على commit أقدم نعرف أنه يعمل:
git bisect good <old_good_commit_hash>
بعد ذلك، سيرشدك Git عبر إجراء checkout للـ commits. ستشغّل ./main.sh، وتتحقق مما إذا كان المجموع 6 أو 10، ثم تكتب git bisect good أو git bisect bad وفقًا لذلك.
أتمتة عملية تصحيح الأخطاء
قد يستغرق اختبار كل commit يدويًا وقتًا طويلًا إذا كان الاختبار معقدًا. يتيح لك git bisect run أتمتة هذه العملية!
توفّر script ينتهي بإحدى القيم التالية:
0(صفر) إذا كان الـ commit سليمًا.125إذا كان ينبغي تخطي الـ commit.- أي قيمة أخرى غير صفرية (مثل
1) إذا كان الـ commit معيبًا.
سينفّذ Git هذا script على كل commit يجري اختباره حتى يعثر على الخطأ.
#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
exit 0 # Good commit
else
exit 1 # Bad commit
fiإنهاء البحث
عندما يحدّد git bisect أول commit معيب بنجاح، سيعرض تجزئة الـ commit ورسالته.
بعد العثور على السبب وفهم المشكلة، من الضروري إعادة مستودعك إلى حالته الأصلية قبل بدء bisect:
git bisect reset
يعيدك هذا الأمر إلى الـ commit الذي كنت عليه عند بدء bisect، وينظّف حالة bisect المؤقتة.
اختبار معلومات Bisect
لقد شغّلت للتو git bisect start، ووضعت علامة «معيب» على HEAD الحالي، وعلامة «سليم» على commit أقدم. أجرى Git checkout لـ commit يقع في المنتصف.
شغّلت اختباراتك، وكان الخطأ موجودًا في هذا الـ commit الأوسط.
مراجعة `git bisect`
تهانينا! لقد تعلمت كيفية استخدام git bisect:
- إنها أداة قوية للعثور على الـ commit الدقيق الذي أدخل الخطأ.
- تستخدم البحث الثنائي لتحقيق الكفاءة.
- تحدّد commits «سليمة» (خالية من الخطأ) و«معيبة» (يوجد فيها الخطأ).
- يمكنك أتمتة عملية الاختبار باستخدام
git bisect run <script>. - تذكّر دائمًا تشغيل
git bisect resetللتنظيف بعد انتهاء البحث!
تعلم DevOps Bootcamp مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 142
- الدروس
- 568
الأسئلة الشائعة
هل درس «Git Bisect لتنقيح الأخطاء» مجاني؟
نعم — نص درس «Git Bisect لتنقيح الأخطاء» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «Git Bisect لتنقيح الأخطاء»؟
استخدم `git bisect` للعثور بكفاءة على الالتزام المحدد الذي أدخل خطأً، موفرًا وقتًا ثمينًا في تنقيح الأخطاء تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «Git Bisect لتنقيح الأخطاء»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Git Reflog واستعادة السجل
- Git Bisect لتنقيح الأخطاء
- صيانة المستودع وترتيبه
- إعادة كتابة السجل باستخدام git filter-repo