در این مقاله از راکت قسمت دوم از مقالات چگونه از گیت در اندرویداستودیو استفاده کنیم را ارائه میدهیم، اگر قسمت اول را نخواندهاید میتوانید از لینک زیر استفاده کنید.
چگونه از گیت در اندروید استودیو استفاده کنیم قسمت اول
موارد مورد بررسی
در این قسمت، تعدادی از ویژگیهای وابسته به commit را به شما نشان میدهیم، و تغییرات را وقتی در اندرویداستودیو با گیت کار میکنیم با هم مقایسه میکنیم. شامل:
- تعامل با staging
- بهترین عادات قبل از commit
- رفع conflict
- حاشیه نویسی
- مقایسه کردن تغییرات
نکته: تمامی ارجاعات، گزینهها، نامها، پیکربندیها در این مقاله براساس اندرویداستودیو بر روی سیستمعامل مکینتاش است. ممکن است بر روی سیستمعامل های دیگر مانند ویندوز یا لینوکس کمی متفاوت باشد، اما کلیات در همهی آنها یکی است.
تعامل با staging
یکی از بهترین عادتها هنگام کار با گیت این است که، commit را زود و در اغلب موارد انجام دهید.
این یعنی بهجای اینکه تا هنگام کامل شدن commit صبر کنید، بهتر است که کار را در تکههای کوچک انجام دهید و کار خود را commit کنید. برای انجام این کار از گزینه --interactive در مسیر VCS > Commit استفاده کنید.
در پنل diff میتوانید تعیین کنید که کدام قسمت از فایل میخواهید در commit کنونی باشد. با قابلیت interactive میتوانید تغییرات وابسته را در یک گروه commit کنید.
بهترین عادتها قبل از commit
در پنجره commit changes، گزینههای زیادی در قسمت before commit وجود دارد، بیایید باهم برسیشون کنیم:
- Reformat Code: همانند وقتی که یک تکه کد را انتخاب و آنرا در مسیر Code > Reformat Code و یا با میانبر option + cmd + L اصلاح میکنید. فضاها و تبهای اضافی را که ممکنه داده باشید را حذف و آنها را در یک قالب به صورت مناسب مرتب میکند.
- Rearrange Code: همانند وقتی که شما Code > Rearrange Code را انتخاب میکردید. این گزینه دستور میدهد که همهی attribute هایی که در یک مسیر معین هستند، براساس کد استایل از پیش تعریف شده در مسیر Preferences > Editor > Code > Style > Java و در تب Arrangement مجدد تنظیم شوند.
- Optimize Imports: همانند زمانی که گزینهی Code > Optimize Import را انتخاب میکردید و یا میانبر Ctrl + Option + O میزدید.
- Perform Code Analysis: همانند زمانی که گزینه Analyze > Inspect Code را انتخاب میکردید. یک سری بررسی کد است که کدهای غیر عادی در پروژه را قبل از commit یا compile حذف و یا تصحیح میکند.
- Check TODO: یکی از محبوبترین گزینهها است که در ادامه توضیح داده خواهد شد.
- CleanUp: این گزینه تکه کدهای مشکلساز را پیدا کرده و آنها را فورا درست کرده.
بیایید این گزینهها را آزمایش کنیم.
همانطور که میبینید در این تکه کد چیزهای زیادی نیاز به درست شدن دارند.
اینجا من گزینههای: Reformat Code, Rearrange Code, Optimize Import, Perform Code Ananlysis و cleaup را انتخاب میکنم. اکنون در خروجی که در تصویر زیر میبینید همهی مشکلات خودکار درست شدهاند.
یادم رفت گزینه Check TODO را انتخاب کنم :(
فرض کنید نیاز داریم که فلگ DEBUG را True کنیم و یک to-do برای یاداوری برگرداندن آن به False بعد از پایان Debuging اضافه کنیم.
اکنون، بیایید که در نظر بگیریم که شما to-do را فراموش کردهاید، و این commit خطرناک را انجام دادهاید، انتخاب گزینه Check Todo شمارا نجات خواهد داد چرا که هنگام کلیک بر روی دکمه to-do را به شما یادآوری میکند.
پنجرهای که باز خواهد شد میگوید: "یک آیتم Todo برای ویرایش یا اضافه کردن پیدا شد، آیا میخواهید که آنرا بازبینی کنید؟"، اگر برروی Review کلیک کنید، Todo ای که نیاز به بازبینی دارد را به شما نمایش میدهد.
نکتهای که باید به آن توجه کنید این است که آن گزینه همانند یک یادآور است و شما باید خود تغییر و یا حذف آن Todo را بررسی کنید، بنابراین میتوانید commit را ادامه دهید.
رفع Conflict
اگر شما یک توسعهدهنده هستید، هرچه زودتر باید با Conflict خود را سازگار کنید. ابزارهای زیادی برا رفع Conflict وجود دارد اما به نظر من، اندرویداستودیو بهترین گزینه برای توسعهدهندههای اندروید است.
هنگامی که شما قصد ادغام و یا تغییر برنچ در یک برنچ دیگر دارید اگر به Conflict بر بخورید، پنجره Conflict با لیستی از Conflict ها همانند زیر ظاهر میشود:
- Accept Yours: نگهداشتن تغییرات برنچ خود، و رد کردن تغییرات برنچی که میخواهید در آن ادغام کنید.
- Accept Theirs: دورانداختن تغییرات برنچ خود، و استفاده از تغییرات برنچی که میخواهید در آن ادغام کنید.
- Merge: برطرف کردن Conflict به صورت دستی.
اگر شما گزینه Merge را انتخاب کنید، یک پنجره به شما نمایش داده میشود که شامل تغییرات Repository محلی در چپ و تغییرات remote در سمت راست و نتیجه ادغام در وسط است، که همانطور در تصویر زیر میبینید هر کدام در یک قسمت جداگانه قرار دارند.
بیاید یکم بیشتر در مورد رنگها صحبت کنیم.
- رنگ سبز: تغییراتی که برای حرکت به هر قسمت مطمئن هستند
- رنگ آبی: تغییراتی که به طور مستقیم باعث تغییر نتیجه ادغام در پنل وسط میشود
- رنگ قرمز: تغییرات در هردو قسمت چپ و راست، که نیاز دارد با دقت بررسی شود
- رنگ خاکستری: خطهای حذف شده را به شما نشان میدهد.
نکته: قبل از حل هرگونه Conflict، به شما پیشنهاد میکنم بر روی دکمه جادویی در پنل بالا کلیک کنید، که باعث میشود اندرویداستودیو سعی کند Conflict های ساده را تا جایی که میتواند حل کند. و این حقیقتا یک نجاتدهنده برای شماست.
بعد از کلیک بر روی دکه "Resolve Simple Conflict"، تنها نیاز دارید که خطهای قرمز را بررسی کنید.
شما میتوانید از فلشها برای حرکت تغییرات بین Repository محلی و Remote استفاده کنید تا زمانی که IDE به شما اخطار Conflict بدهد.
نکته: در پنل Merge Revision قسمت بالا سمت چپ، شما میتوانید از فلش بالا و پایین برای حرکت بین تغییر قبلی و بعدی استفاده کنید. این میتواند خیلی مفید باشد اگر شما یک فایل با هزاران خط Conflict داشته باشید.
حاشیهنویسی
گاهیاوقات میخواهید نشان دهید که چه اصلاحاتی و چه کسی آخرین بار فایل را تغییر داده است. بنابراین، اینجا حاشیهنویسی به کمک شما میآید.
شما میتوانید کل فایل را با کلیک بین فضای خالی شماره خط و محتوای فایل حاشیهنویسی کنید.
با این کار به شما تاریخ و کسی که آخرین بار فایل را تغییر داده نمایش میدهد.
با کلیک بر روی Annotate Content، جزئیات تغییر شامل فایلهای تغییر داده شده و پیغام Commit را میبینید.
مقایسه تغییرات
فرض کنید یک باگ از یک مشتری دریافت میکنید و شما میدانید که کدام فایل باعث باگ شده است، اما نمیدانید باگ از کدام خط است و چه کسی این تغییر را اعمال کرده است.
مقایسه تغییرات کنونی فایل با نسخه قبلی به شما در فهمیدن آن کمک میکند.
بر روی فایل کلیک راست کنید، و Git > Compare With… را انتخاب کنید.
پنجره File Revision به شما نمایش داده میشود که شامل همهی commit های مربوط به این فایل است. سپس شما میتوانید با دنبال کردن تاریخچه تغییرات باگ را پیدا کنید.
یکی از محبوبترین ویژگیها Compare With Branch است، با این ویژیگی میتوانید که تغییرات برنچ کنونی را با هر برنچ دیگری مقایسه کنید.
در مواردی که برنچهای زیادی دارید، در قسمت Select Branch to Compare، میتوانید هر کاراکتری را برای پیدا کردن برنچ تایپ کنید.
مقایسه برنچ ~ git log <branch1>..<branch2>
این قسمت برای زمانی است که میخواهید همهی تغییرات بین دو برنچ را مقایسه کنید.
فرض کنید در برنچ feature هستیم، و میخواهیم آنرا با برنچ master مقایسه کنیم. به مسیر VCS > Git > Branches بروید و برنچ مستر را انتخاب و بر روی Comparre With Current کلیک کنید.
پنجرهی Compare Feature With Master باز میشود که شامل همهی تغییرات بین دو برنچ است، کامیت به کامیت، فایل به فایل.
- Commit that exist in master but don’t exist in feature(قسمت بالا): همانند خروجی دستور git log feature..master.
- Commit that exist in feature but don’t exist in master(قسمت پایین): همانند خروجی دستور git log master..featuer.
اگر بر روی هر commit در قسمت بالا یا پایین کلیک کنید، میتوانید تغییرات مربوط با آن را در پنل سمت راست مشاهده کنید.
اگر میخواهید همهی فایلهای تغییر داده شده بین دو برنچ را ببینید، باید بر روی تب Files کلیک کنید. با این دید، میتوانید سریع همهی تغییرات را مقایسه کنید.
نتیجه
امیدوارم چیزهای جدیدی یادگرفته باشید و همچنین ماهرانه از این ابزار مفید در اندرویداستودیو استفاده کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید