گٹ بائیسکٹ: اپنے کوڈ میں موجود بگ کی شناخت کیسے کریں؟



گٹ بائیکٹ کے بارے میں یہ مضمون ، سیکھیں کہ کس طرح ’گٹ بائیسکٹ‘ کمانڈ پہلے بائنٹ کمٹ کا پتہ لگانے میں مدد کرتا ہے جس میں بائنری سرچ الگورتھم کا استعمال کرتے ہوئے بگ متعارف کرایا جاتا ہے۔

میرا کوڈ کل تک ٹھیک کام کر رہا تھا ، لیکن اس وقت تک نہیں جب تک دور دراز ذخیرے سے حالیہ پل نے کوڈ توڑ نہیں لیا !!!

اگر آپ بھی ایسی ہی حالت میں ہیں اور نہیں جانتے ہیں کیا تبدیلی؟ کوڈ توڑ دیا یا ڈبلیو ایچ او بہت سے تعاون کرنے والوں میں سے کے مالک ہیں یہ بگ / خصوصیت ، پھر گٹ بائیسکٹ آپ کا راستہ ہے۔ لہذا ، گٹ بائیسکٹ کے اس مضمون میں آپ سیکھیں گے کہ کس طرح ‘گٹ بائیسکٹ‘حکم آتا ہے بائنری سرچ الگورتھم کا استعمال کرتے ہوئے بگ کو متعارف کرانے والی پہلی خراب کمٹ کا پتہ لگانے میں بچاؤ۔

اس مضمون میں شامل عنوانات کچھ اس طرح ہیں۔





گٹ بائیسکٹ کیوں استعمال کریں؟

اس حقیقت میں کوئی شک نہیں ہے کہ آپ ہر معمولی تبدیلی کے ل. متعدد وابستگی پیدا کرتے ہیں . ایسے میں ، کوڈ کو ڈیبگ کرنا ایک تکلیف دہ کام بن جاتا ہے ، کیونکہ ورکنگ کوڈ کو جانچنے اور مسئلے کا پتہ لگانے کے لئے آپ کو دستی طور پر پروجیکٹ اسنیپ شاٹ کی ہر ایک ترمیم پر بروقت دستی طور پر پیچھے جانا پڑتا ہے۔ اب ، یہ اور بھی بڑھ جاتا ہے پیچیدہ جب آپ کے پاس بغیر کسی نقطہ کے معائنہ کرنے کے لئے دوسرے کا کام ہوتا ہے تو ، ہر ایک سے اپنی غلطیوں کو صاف کرنے کی درخواست کرنا بھی بہت ممکن نہیں لگتا ہے۔
راستے میں ، آپ اس عمل میں متعدد ‘فیچر’ (یا ہاٹ فکس) شاخیں بھی تشکیل دے سکتے ہیں اور ضائع کرسکتے ہیں اور ترقی کی مرکزی لائن سے ہٹتے ہوئے وقت اور کوشش کو ضائع کرتے ہیں۔



لہذا ، اس طرح کے منظرناموں سے بچنے کے ل you ، آپ اس کا استعمال کرسکتے ہیںگٹ بائیسکٹخراب پروجیکٹ پر نظر ثانی (یا سنیپ شاٹ) تلاش کرنے کے لئے کمانڈ کریں اور آخر کار اسے درست کریںگٹ لوٹناکمانڈ.

’گٹ بائیسکٹ‘ کیسے تلاش کرتا ہے؟



یہ حکم بائیسکٹ (تقسیم) کے درمیان آپ کی تاریخ اچھی اور برا عہد کرنا رینج یہ آپ کی نشاندہی کرتا ہے موجودہ پروجیکٹ حالت کرنا a درمیانی حد عہد کرنا سنیپ شاٹ پھر گٹ بائیسکٹ کمانڈ آگے بڑھتا ہے ہر کمٹ ID اس حد کے درمیان جبکہ موقوف ہر اسنیپ شاٹ پر آپ کی اجازت دینے کیلئے کوڈ کی جانچ کریں . اگر بگ موجود ہے تو ، آپ بطور کمٹٹ اعلان کرتے ہیں برا ، اگر نہیں تو اچھی جب تک کہ تلاش ختم نہ ہوجائے۔

نحو

گٹ بائیسکٹ

گٹ بائیسکٹ کو بہتر طور پر سمجھنے کے ل us ، آئیے ایک پروجیکٹ بنائیں جو کار میں استعمال کرنے کے لئے ایک آسان نیویگیشن ایپ کے کوڈ کو تیار کرے۔

ابتدائی پروجیکٹ سیٹ اپ

ایک پروجیکٹ بنانے کے لئے جو کار میں استعمال ہونے والے سادہ نیویگیشن ایپ کے لئے کوڈ تیار کرتا ہے ، آپ مندرجہ ذیل مراحل پر عمل کرسکتے ہیں۔

مرحلہ نمبر 1: اپنے OME ہوم فولڈر میں ایک نئی ڈائریکٹری بنائیں:

سی ڈی OME ہوم mkdir my_nav_app

مرحلہ 2: نئی ڈائرکٹری پر جائیں:

cd $ my_nav_app

مرحلہ 3: پروجیکٹ کو میرے گٹ ہب پیج سے ڈاؤن لوڈ کرنے کے لئے کلون:

گٹ کلون https://github.com/divyabhushan/my_nav_app.git

اب ، ہم پروجیکٹ ڈائرکٹریوں اور فائلوں کی ترتیب کو سمجھیں ، جیسا کہ کمانڈ کے ذریعہ طباعت ہوا ہے:ls -lTR

ماخذ کوڈ لے آؤٹ - گٹ بیسک - ایڈورکا

اگلا ، آئیے اس کوڈ کو تیار کرنے کے ل I میں نے جو معاہدہ کیا ہے اس کو دیکھنے کے لئے پروجیکٹ ہسٹری جریدہ دیکھیں۔

مثال کے طور پر ، ایک سادہ گٹ لاگ کمانڈ تاریخ کو تفصیل کے ساتھ پرنٹ کرتا ہے ، تاہم ، میں تاریخ کو خوبصورت شکل اور اپنی مرضی کے مطابق بنانا چاہتا ہوں۔ اس طرح ، ہمیں دو ایک عرفی نام مقرر کریں - ‘ہسٹ’ کا استعمال کرتے ہوئے گٹ عرف کمانڈ جیسا کہ ذیل میں دکھایا گیا ہے:

گٹ عرف۔حسٹ 'لاگ - تشریح = فارمیٹ:'٪ سی (پیلا)٪ h٪ کریمسیٹ٪ اشتہار ٪ C (سبز)٪ s٪ Creset٪ C (سرخ)٪ d٪ Creset٪ C (نیلے) [٪ an] '- پیراگراف - سجاوٹ - تاریخ = مختصر'

اب ، میں اس بگ فکس کی خصوصیت کو ایک علیحدہ برانچ میں انجام دینے جا رہا ہوں ، تاکہ ’ماسٹر‘ برانچ میں اہم پیشرفت میں مداخلت نہ ہو۔ ایسا کرنے کے لئے ، ذیل میں دیئے گئے احکامات کی پیروی کریں:

  • برانچ ‘دیو’ تشکیل دیں: [ماسٹر] $گٹ شاخ دیو
  • برانچ ‘دیو’ پر جائیں: $git چیک آؤٹ دیو
  • تاریخ کے نوشتہ جات کی فہرست: [دیو]گو ہسٹ[نوٹ: یہاں ’عرف‘ کمانڈ استعمال ہوا]

مزید یہ کہ ، میں نے آخری معروف نیک عہد کو اجاگر کیا ہے جس کے بارے میں میں جانتا ہوں کہ جس میں میری اسکرپٹ نے متوقع ٹیسٹ کے نتائج کے ساتھ ٹھیک کام کیا ، یہ کمٹ اسنیپ شاٹ ہے ٹیگڈ بطور v1.0.

لہذا ، اب جب ہم اپنی آخری اچھی کمٹٹمنٹ کو جانتے ہیں ، تو آئیے ہم اس مضمون میں ’گٹ بائیکٹ‘ پر آگے بڑھیں اور درخواست کی جانچ کریں۔

درخواست کی جانچ کریں

اسکرپٹ کو اس طرح چلائیں - $./scriptts/myApplication.sh[پہلی بار جانچ]



واضح طور پر ، میری موجودہ پروجیکٹ ریاست میں ہے غلطی ، اور مجھے یقین نہیں ہے کہ میں نے کون سی تبدیلی کی جس میں یہ عہد کیا کہ اس تبدیلی کو متعارف کرایا۔ لہذا ، اگلے گٹ بائیسکٹ کے بارے میں اس مضمون میں ، آئیے دیکھیں کہ خراب عہد کی شناخت کیسے کی جائے۔

بری عہد کی نشاندہی کرنا

خراب عہد کا معائنہ کرنے کے ل you ، آپ درج ذیل اقدامات پر عمل کریں گے:

  • بائیسکٹ کمانڈ شروع کریں :گٹ بائیسکٹ اسٹارٹ
  • بری کمٹ ID کا ذکر کریں: گٹ بائیکاٹ خراب سریاgit bisect c5b3ca8
  • آخری معروف اچھی کمٹ شناخت کا ذکر کریں: گٹ بائیسکٹ اچھا v1.0یاgit bisect 93859d8

یہ ارتکاب کی تاریخ کی حد کو اچھ andے اور بُرے عہدوں کے درمیان تقریبا mid وسط کے فاصلے پر بائیسکٹ کردیتی ہے جو ہمیں ارتکاب شناخت کی طرف لاتا ہے۔ f61a7e8

لہذا ، کمانڈ نے اس پروجیکٹ ورژن کو چیک کیا ہے جیسا کہ اس کمٹ ID میں تھا۔ اب ، ہم آگے بڑھیں اور اپنی درخواست کی دوبارہ جانچ کریں۔

درخواست چلانے کا حکم : $./scriptts/myApplication.sh[دوسری بار جانچ]

جاوا میں فائلوں کو استعمال کرنے کا طریقہ


چونکہ درخواست ہے منظور اس کمٹ میں ، یہ کمٹمنٹ یقینا the برا عہد نہیں ہے۔ تو ، اگلا ، آپ کو بائیسکٹ کمانڈ کو اسی طرح مطلع کرنا ہوگا - $اچھا bisect اچھا ہے


اب ، یہ تلاش کے نتائج کو حد کے پہلے نصف حصے میں مزید محدود کردے گا جیسا کہ دکھایا گیا ہے۔


اپنی درخواست کی دوبارہ جانچ کریں - کمانڈ: $./scriptts/myApplication.sh[تیسری بار جانچ]


لہذا ، چونکہ ہمیں اوپر کی طرح کوئی غلطی نظر آرہی ہے ، یہ ایک بری عہد ہے۔

بائیسکٹ کمانڈ کو بتائیں ، چلائیں $git bisect خراب ہے


جو تلاش کو مزید تنگ کرتا ہے اور آپ کو آخری نیلے رنگوں میں گھریلو درمیانی نظر ثانی کی طرف لاتا ہے۔ a6ac769

لہذا ، میں ایک بار اسی درخواست کا استعمال کرتے ہوئے اپنی درخواست کی آخری بار جانچ کرتا ہوں: $./scriptts/myApplication.sh[چوتھی بار آزمائش]

اب چونکہ درخواست دوبارہ ناکام ہوگئی ، یہ اب بھی ایک بری عہد ہے۔ تو ، آئیے مندرجہ ذیل کمانڈ کو چلائیں:

کمانڈ چلائیں: git bisect خراب ہے

بری عہد ملا

اس سے آخری آخری عہد باقی ہے جو خراب ہے۔


تو آپ جانتے ہو کہ یہ وہ جگہ ہے جہاں کوڈ ٹوٹ گیا ہے۔ آگے کیا؟

سمجھیں کہ فائل میں کون سا بگ تھا

اس صورت میں ، آؤٹ پٹ آپ کو اس کے بارے میں کم سے کم معلومات فراہم کرتی ہے ارتکاب ID ، مصنف کا نام ، اور مصنف کی تاریخ کے ساتھ پیغام کا ارتکاب کریں اور راستہ اس میں ترمیم کی گئی تھی۔

اگر آپ مزید ڈیبگ کرنا چاہتے ہیں تو آپ کو اس کی ضرورت ہوگی پڑھیں ID اعتراض کرنا .

کمانڈ: گٹ شو a6ac76994b3f6c7519204f910fc787b7928cf8ef

اس سے کمٹمنٹ آبجیکٹ پڑھے گی اور لاگ میسج اور متنی ڈرافٹ پرنٹ ہوگا۔

آپ یہ بھی تجزیہ کرنے کے لئے ’گٹ دوش‘ کمانڈ کا استعمال کرسکتے ہیں کہ کس لکیر کے ذریعہ ہر لائن کو کس طرح اور کس میں مرتب کیا گیا ، اس مصنف کے بطور کمانڈ چلائیں:git الزام کوڈ / ترقی_nav.sh

تلاش بند کرو

تلاش کو روکنے کے لئے ، درج ذیل کمانڈ کا استعمال کریں:

کمانڈ: git bisect ری سیٹ کریں


اس طرح ، بائیسکشن کا عمل رک گیا ہے اور آپ اس برانچ پر واپس آ گئے ہیں جہاں سے آپ نے تلاش شروع کی تھی۔ اب ، اگلا مرحلہ کوڈ کو ٹھیک کرنا یا ڈیبگ کرنا ہے۔

کوڈ کو ٹھیک / ڈیبگ کیسے کریں؟

ٹھیک ہے ، اس منصوبے کی موجودہ حالت کو ٹھیک کرنے کے ل a آپ جو کام کرسکتے ہیں اب آپ نے اس عہد کی نشاندہی کی ہے جس نے مسئلے کو پہلے جگہ پر لایا ہے۔
تاہم ، اگر آپ ایک کے عہد میں ردوبدل کر رہے ہیں مشترکہ ذخیرہ یہ سب سے بہتر ہے واپس لوٹنا تبدیلی کا استعمال کرتے ہوئے ‘ گٹ لوٹنا ' کمانڈ.

کام: مذکورہ بری عہد کے ذریعہ کی گئی تبدیلیاں واپس لائیں

کمانڈ: گٹ لوٹنا a6ac769

نتیجہ کے طور پر ، اس عہد نامے سے کی گئی تبدیلیاں واپس لانے سے 2 کام ہوئے:

  • اس نے آخری 3 شامل لائنیں (سبز رنگ میں اشارہ) کو حذف کردیا اور حذف شدہ لائن (سرخ رنگ میں اشارہ کیا) واپس شامل کی۔ (a6ac769 کے الٹ)
  • ریورس میسج کی معلومات کے ساتھ ایک اضافی کمٹ تیار کیا

'ریورٹ کمانڈ اس تبدیلی کو ٹریک کرنا آسان بنا دیتا ہے جسے آپ اصل عہد سے موڑ گئے۔'

کا استعمال کرتے ہیں ‘شو’ پھر سے حکم دیں کہ آبجیکٹ ID کو پڑھیں ، جیسے-

کمانڈ: گٹ شو 801f029

اب ، آگے بڑھیں اور درخواست کی جانچ کریں۔ یہ ٹھیک سے عملدرآمد کرے گا۔

کمانڈ: $./scriptts/myApplication.sh

اس کے برعکس ، اگر آپ تاریخ سے برے عہد کو ختم کرنا چاہتے ہیں:

  • آپ ‘ گٹ ری سیٹ 'کے ساتھ کمانڈ--سخت'آپشن (اگرچہ مشترکہ ذخیرے میں تجویز نہیں کیا گیا ہے)۔

  • ایک فائل کا سابقہ ​​ورژن چیک کریں جس کا استعمال کرتے ہوئے ‘گٹ چیک آؤٹ‘کے ساتھ کمانڈ کریں‘-‘آپشن۔

یہ نوٹ کیا جانا چاہئے ، یہ تب تک آپ کے مقامی ذخیرے میں تبدیلیاں لائے گا جب تک کہ آپ تبدیلیوں کو دور دراز کے ذخیروں میں منتقل نہ کریں۔ چونکہ کچھ تبدیلیاں نئی ​​کمٹمنٹ آبجیکٹ آئی ڈی تیار کرتی ہیں جیسا کہ مندرجہ بالا ہمارے معاملات میں دور دراز کے ذخیرے کو معمول کے مطابق دھکیل دیا جاتا ہے کیونکہ تاریخ کا رخ موڑ جاتا۔ آپ کو استعمال کرنا چاہئے ‘ گٹ دھکا ‘کے ساتھ کمانڈ کریں‘--for‘آپشن۔

’ماسٹر‘ شاخ کو اپ ڈیٹ کریں

جب میں نے اپنی 'دیو' شاخ میں بگ طے کی تھی ، اب میں اس تبدیلی کو 'ماسٹر' شاخ میں بھی ضم کرسکتا ہوں-

  • 'ماسٹر' ، کمانڈ پر سوئچ کریں:گٹ چیک آؤٹ ماسٹر
  • حالیہ تازہ ترین معلومات کو 'اصل / ماسٹر' سے لے کر 'ماسٹر' تک ، کمانڈ:گٹ پل نکالنے
  • ضم کریں ‘دیو’ تبدیلیاں ، کمانڈ:git ضم دیو

تاہم ، اگر آپ کے انضمام سے تنازعات پیدا ہوسکتے ہیں اگر دور دراز کے ذخیرے سے مزید معاہدہ کریں۔ تنازعات کو حل کریں اور انضمام کے ساتھ جاری رکھیں۔
آخر میں ، صرف مستحکم 'ماسٹر' برانچ کو دور دراز کے ذخیرے سے وابستہ کرتے ہوئے دبائیں جب آپ کو اپنا گندا کام (بگ ، خصوصیات ، افزائش) صرف اس خصوصیت کی شاخوں پر کیا جاتا ہے جیسے اس مثال میں 'دیو'۔
مزید یہ کہ منطقی کو اپنانا بہتر ہے برانچنگ کی حکمت عملی آپ کے گٹ ورک ورک فلو کو کارگر بنانے اور محفوظ بنانے کیلئے۔

مختصرا. یہ کہ ’گٹ بائی پاس‘ ایک کارآمد اور مفید کمانڈ ہے جو جلدی سے چلتا ہے شناخت کرنا ارتکاب ID کہ متعارف کرایا کرنے کے لئے غلطی ایک وسیع پیمانے پر کی مدد سے آپ کے چلانے کے کوڈ میں بائنری تلاش منطقی طور پر تقسیم کرنا نصف لاگت کے درمیان لاگ ان اچھی اور برا عہد کرنا رینج . نتیجہ اخذ کرنے کے ل you ، آپ نے سیکھا پتہ لگائیں ناقص عہد اور واپس لوٹنا اس کے ذریعہ کی گئی تبدیلی۔

اس کے علاوہ ، ذیلی کامناموں میں ‘اچھے’ اور ‘خراب’ آپ ترمیمی کیفیت کی وضاحت کے ل new بھی نئے اور پرانے جیسی اصطلاحات استعمال کرسکتے ہیں۔ مختلف کمٹ (شی -1) ایڈز کی شناخت کے ل You آپ مختلف سب کمانڈز اور نظر ثانی / کمٹ ایڈز کو گزرنے کے لئے کئی بار کمانڈ چلا سکتے ہیں۔ متبادل کے طور پر ، اس کمانڈ کا استعمال کرتے ہوئے ٹوٹے ہوئے کوڈ کو بنانے کے لئے ایک خودکار ٹیسٹ اسکرپٹ بھی چلایا جاسکتا ہے۔ نیز ، اس کمانڈ کی تفصیلا تفصیل چلائیںgit bisect --helpٹرمینل پر تو ، لوگ اس کے ساتھ ہم گیٹ بائیسکٹ پر اس مضمون کو ختم کرتے ہیں۔

ڈی او اوپس کا ارادہ ہے کہ ٹیموں کے مابین زیادہ سے زیادہ مواصلت اور تعاون کی دعوت دیتے ہوئے زیادہ سے زیادہ بہتر اور قابل اعتماد کے ساتھ بہتر معیار کے سافٹ ویئر تیار کریں۔ اگر آپ اس مضمون سے دلچسپی رکھتے ہیں تو ، سی ہیک آؤٹ ایڈوریکا کے ذریعہ ، ایک قابل اعتماد آن لائن سیکھنے والی کمپنی جس کی دنیا بھر میں 250،000 سے زیادہ مطمئن سیکھنے والوں کا نیٹ ورک موجود ہے۔ ایڈورکا ڈی او اوپس سرٹیفیکیشن ٹریننگ کورس سیکھنے والوں کو ڈی او اوپس کیا ہے کو سمجھنے میں مدد کرتا ہے اور ایس ڈی ایل سی میں متعدد مراحل کو خودکار بنانے کے ل various پپٹ ، جینکنز ، ناگیوس ، جوابی ، شیف ، سالٹ ٹیک اور جی آئی ٹی جیسے مختلف ڈو اوپس عمل اور اوزار میں مہارت حاصل کرتا ہے۔

ہمارے لئے ایک سوال ہے؟ براہ کرم اس کا ذکر 'گٹ بیسکٹ' آرٹیکل کے تبصرے سیکشن میں کریں اور ہم ASAP آپ کے پاس واپس آجائیں گے۔