احتمالا خیلی پیش اومده که یه فیچر یا یه کدی رو پیاده سازی کردید و تست کردید و نهایتا دیدید که همه چی اوکی هست ولی یهو بعد یه مدت دیدید که اون قسمت درست کار نمیکنه، یا اینکه در طول زمان اومدید و یه بخش های دیگه ای رو تغییر دادید و اون تغییرات باعث شدن یه قسمت از کدتون ایراد پیدا کنه.
خب پیدا کردن این ایرادات ریز تو پروژه های بزرگ ممکنه خیلی سخت بشه و اینکه گاهی ادم نمیدونه اصلا کدوم قسمت باعث به وجود اومدن این مشکل شده.
واسه حل کردن این مشکل تو git یه دستور خیلی کاربردی وجود داره که با چند مرحله به راحتی مارو میرسونه به اون کامیتی که باعث به وجود اومدن ایراد شده.
مرحله اول اینه که بیاید اون کامیتی که کدهاتون داشته درست کار میکرده رو پیدا کنید و بعداز اون یه کامیت هم به عنوان کامیتی که کد ایراد داره که این میتونه مثلا اخرین کامیت باشه.
هر کامیت هم یه id داره که در ادامه به اون نیاز داریم.
خب دستور اولی که میزنیم کامیت زیر هست:
git bisect start
با این دستور کار جستجومون شروع میشه
مرحله بعدی مشخص کردن کامیت ایراد دار هست که به دو حالت میشه مشخصش کرد:
git bisect bad HEAD یا git bisect bad efa421e602e29ec557c915bb719879d336ba6b
دستور اول میاد اخرین کامیت رو به عنوان کامیت بد در نظر میگیره و با دستور دوم میتونید خودتون یه کامیت مشخص رو به عنوان کامیت بد مشخص کنید. اون id هم که تو دستور دوم استفاده شده id کامیت مورد نظرمون هست که در ادامه میگم چطور میشه به دست اوردش.
مرحله بعدی هم مشخص کردن کامیتی هست که همه چی توش درست کار میکرده:
git bisect good efa421e602e29ec557c915bb719879d336ba6b
حالا تو این مرحله میتونید اپ رو بیلد کنید و ببینید همه چی درسته یا نه. مکانیزم این دستور به این شکله که میاد مثل جستجوی دودویی کامیت وسطی بین کامیت خوب و بد رو انتخاب میکنه و کدها رو میبره تو اون کامیت حالا با توجه به وضعیت شما باید ببینید اگه همه چی درست بود پس باید id کامیت وسطی رو بذارید به عنوان کامیت good و به جستجو ادامه بدید و اگر هنوز ایراد داشت پس این کامیت میانی میشه کامیت bad . انقد این جابه جایی هارو ادامه میدیم تا نهایتن برسیم به یک کامیت اخر که میشه همون کامیتی که کدمون توش خراب شده.
بعد از این که کارمون تموم شد هم باید دستور زیر رو بزنیم تا پروسه تموم شه:
git bisect reset
برای به دست اوردن id کامیت هامون هم دستور زیر رو میتونیم استفاده کنیم:
git log
فقط یادتون باشه که ممکنه تغییراتی تو بازه های مختلف زمانی رو کدتون اجرا کرده باشید که باعث شه کد اجرا نشه و باید قبل از بیلد کردن اونا رو تغییر بدید ، مثلا من توی کدم ادرس سرور رو یه بار تغییر داده بودم و خب ادرس سرور قدیمی دیگه در دسترس نبود پس تو تمام مراحل باید حواسم میبود که قبل از run کردن بیام ادرس سرور فعال رو بذارم تو کدم.
امیدوارم این پست بتونه کمکتون کنه.