Git और GitHub का पेशेवर कार्यप्रवाह · पाठ

डीबगिंग के लिए Git Bisect

बग उत्पन्न करने वाले विशिष्ट कमिट को कुशलतापूर्वक खोजने और डीबगिंग का मूल्यवान समय बचाने के लिए `git bisect` का उपयोग कीजिए।

पाठ 2, कुल 4 में से11 चरण

डीबगिंग के लिए Git Bisect, CoddyKit पर Git और GitHub का पेशेवर कार्यप्रवाह का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Git और GitHub का पेशेवर कार्यप्रवाह सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Git और GitHub का पेशेवर कार्यप्रवाह पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Git से बग जल्दी ढूँढना

डिबग करना कठिन हो सकता है। कभी-कभी कोई बग दिखाई देता है और आपको पता नहीं होता कि उसे कौन-सा बदलाव लेकर आया।

git bisect एक शक्तिशाली Git कमांड है, जो बग लाने वाले सटीक कमिट को खोजने में आपकी सहायता करता है। यह हजारों कमिट में खोज का दायरा जल्दी सीमित करने के लिए द्विआधारी खोज एल्गोरिदम का उपयोग करता है।

द्विआधारी खोज की शक्ति

मान लीजिए आपके प्रोजेक्ट में 100 कमिट हैं और पहला तथा अंतिम कमिट के बीच कहीं बग आया। हर कमिट को हाथ से जाँचना धीमा होगा!

git bisect "संख्या का अनुमान लगाओ" खेल की तरह काम करता है:

  • आप Git को एक "अच्छा" कमिट बताते हैं (जहाँ बग मौजूद नहीं था)।
  • आप Git को एक "खराब" कमिट बताते हैं (जहाँ बग मौजूद है)।
  • Git लगभग बीच का एक कमिट चुनता है और आपसे उसका परीक्षण करने को कहता है।
  • आप उसे "अच्छा" या "खराब" चिह्नित करते हैं और Git खोज क्षेत्र को आधा कर देता है।

आइए खोज शुरू करें

शुरू करने के लिए आपको Git को बताना होगा कि आप द्विभाजन सत्र शुरू कर रहे हैं। यह कमांड प्रक्रिया आरंभ करता है:

git bisect start

शुरू करने के बाद आप एक ज्ञात "खराब" कमिट (जहाँ बग मौजूद है) और एक ज्ञात "अच्छा" कमिट (जहाँ बग निश्चित रूप से मौजूद नहीं था) निर्दिष्ट करेंगे।

अक्सर "खराब" कमिट आपका वर्तमान HEAD होता है, और "अच्छा" कमिट कोई पुराना रिलीज़ टैग या कुछ दिन पहले का कमिट हो सकता है।

अपने कमिट की सीमाएँ चिह्नित करना

एक बार git bisect शुरू करने के बाद आप अपनी खोज-सीमा निर्धारित करते हैं:

  • खराब कमिट: यह वह कमिट है जहाँ बग मौजूद होने की आपको जानकारी है। git bisect bad <commit-hash> का उपयोग करें, या यदि यह आपका वर्तमान HEAD है तो केवल git bisect bad चलाएँ।
  • अच्छा कमिट: यह वह कमिट है जहाँ बग मौजूद नहीं था, यह आप जानते हैं। git bisect good <commit-hash> का उपयोग करें।

इसके बाद Git इस सीमा के बीच का एक कमिट अपने-आप चेकआउट करेगा।

परीक्षण और दायरा सीमित करना

अच्छे और खराब कमिट चिह्नित करने के बाद Git अपने-आप सीमा के बीच का एक कमिट चेकआउट करेगा। आपका काम इस चेकआउट किए गए कमिट पर कोड का परीक्षण करना है।

  • यदि बग IS मौजूद है, तो git bisect bad लिखें।
  • यदि बग IS NOT मौजूद है, तो git bisect good लिखें।

इसके बाद Git बची हुई सीमा में से बीच का एक और कमिट चुनेगा। आप यह प्रक्रिया तब तक दोहराएँगे, जब तक Git पहला "खराब" कमिट नहीं ढूँढ लेता।

बग आने का अनुकरण करना

आइए किसी स्क्रिप्ट में एक सरल "बग" की कल्पना करते हैं। हम ऐसे प्रोजेक्ट इतिहास का अनुकरण करेंगे जिसमें एक छोटी-सी त्रुटि आई हो।

यह रही हमारी शुरुआती "अच्छी" स्क्रिप्ट:

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"

द्विभाजन की मैन्युअल प्रक्रिया

अब मान लीजिए बाद के एक कमिट ने गलती से लूप को seq 1 4 में बदल दिया, जिससे योग गलत हो गया (6 के बजाय 10)।

हम शुरुआत करेंगे:

git bisect start

फिर अपने वर्तमान HEAD (जहाँ बग मौजूद है) को खराब चिह्नित करेंगे:

git bisect bad HEAD

और पुराने, ज्ञात रूप से सही काम करने वाले कमिट को अच्छा चिह्नित करेंगे:

git bisect good <old_good_commit_hash>

इसके बाद Git कमिट चेकआउट करके आपका मार्गदर्शन करेगा। आप ./main.sh चलाएँगे, देखेंगे कि योग 6 है या 10, और फिर उसी के अनुसार git bisect good या git bisect bad लिखेंगे।

डिबगिंग प्रक्रिया को स्वचालित करना

यदि परीक्षण जटिल हो, तो हर कमिट का मैन्युअल परीक्षण अब भी समय ले सकता है। git bisect run आपको इसे स्वचालित करने देता है!

आप ऐसी स्क्रिप्ट देते हैं जो इन निकास मानों के साथ समाप्त होती है:

  • यदि कमिट अच्छा है तो 0 (शून्य)।
  • यदि कमिट को छोड़ देना चाहिए तो 125।
  • यदि कमिट खराब है तो कोई अन्य गैर-शून्य मान (जैसे 1)।

बग मिलने तक Git इस स्क्रिप्ट को हर परीक्षण किए गए कमिट पर चलाएगा।

#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
  exit 0 # Good commit
else
  exit 1 # Bad commit
fi

अपनी खोज पूरी करना

जब git bisect सफलतापूर्वक पहला खराब कमिट पहचान लेता है, तो यह आपको कमिट हैश और उसका संदेश बताएगा।

दोषी कमिट ढूँढने और समस्या समझने के बाद, द्विभाजन शुरू होने से पहले अपनी रिपॉज़िटरी को उसकी मूल स्थिति में रीसेट करना महत्वपूर्ण है:

git bisect reset

यह कमांड आपको उस कमिट पर वापस ले जाती है जिस पर आप द्विभाजन शुरू करते समय थे और अस्थायी द्विभाजन स्थिति को साफ़ कर देती है।

द्विभाजन ज्ञान जाँच

आपने अभी git bisect start चलाया, अपने वर्तमान HEAD को खराब और पुराने कमिट को अच्छा चिह्नित किया। Git बीच का एक कमिट चेकआउट करता है।

आप अपने परीक्षण चलाते हैं और इस बीच वाले कमिट पर बग IS PRESENT पाते हैं।

`git bisect` का पुनरावलोकन

बधाई हो! आपने git bisect का उपयोग करना सीख लिया है:

  • यह बग लाने वाले सटीक कमिट को खोजने का एक शक्तिशाली उपकरण है।
  • यह दक्षता के लिए द्विआधारी खोज का उपयोग करता है।
  • आप "अच्छे" (बग-मुक्त) और "खराब" (बग-मौजूद) कमिट निर्धारित करते हैं।
  • आप git bisect run <script> से परीक्षण प्रक्रिया को स्वचालित कर सकते हैं।
  • अपनी खोज के बाद सफ़ाई करने के लिए हमेशा git bisect reset चलाना याद रखें!
शुरुआत निःशुल्क

एआई शिक्षक के साथ Git और GitHub का पेशेवर कार्यप्रवाह सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “डीबगिंग के लिए Git Bisect” पाठ निःशुल्क है?

हाँ—“डीबगिंग के लिए Git Bisect” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Git और GitHub का पेशेवर कार्यप्रवाह पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Git और GitHub का पेशेवर कार्यप्रवाह पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“डीबगिंग के लिए Git Bisect” में मैं क्या सीखूँगा?

बग उत्पन्न करने वाले विशिष्ट कमिट को कुशलतापूर्वक खोजने और डीबगिंग का मूल्यवान समय बचाने के लिए `git bisect` का उपयोग कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Git और GitHub का पेशेवर कार्यप्रवाह का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Git और GitHub का पेशेवर कार्यप्रवाह शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Git और GitHub का पेशेवर कार्यप्रवाह शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“डीबगिंग के लिए Git Bisect” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Git और GitHub का पेशेवर कार्यप्रवाह पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Git और GitHub का पेशेवर कार्यप्रवाह पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Git Reflog और इतिहास की पुनर्प्राप्ति
  2. डीबगिंग के लिए Git Bisect
  3. रिपॉज़िटरी रखरखाव और सफ़ाई
  4. git filter-repo से इतिहास का पुनर्लेखन
← Git और GitHub का पेशेवर कार्यप्रवाह पर वापस जाएँ