نسرین محمدزاده
نسرین محمدزاده
خواندن ۳ دقیقه·۵ سال پیش

نحوه استفاده از دستور git bisect


احتمالا خیلی پیش اومده که یه فیچر یا یه کدی رو پیاده سازی کردید و تست کردید و نهایتا دیدید که همه چی اوکی هست ولی یهو بعد یه مدت دیدید که اون قسمت درست کار نمیکنه، یا اینکه در طول زمان اومدید و یه بخش های دیگه ای رو تغییر دادید و اون تغییرات باعث شدن یه قسمت از کدتون ایراد پیدا کنه.

خب پیدا کردن این ایرادات ریز تو پروژه های بزرگ ممکنه خیلی سخت بشه و اینکه گاهی ادم نمیدونه اصلا کدوم قسمت باعث به وجود اومدن این مشکل شده.

واسه حل کردن این مشکل تو 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 کردن بیام ادرس سرور فعال رو بذارم تو کدم.

امیدوارم این پست بتونه کمکتون کنه.

androidgitcommand
شاید از این پست‌ها خوشتان بیاید