مقدمه

در درس‌های گذشته، فرآیند کامل یک Pull Request از ایجاد تا بازبینی و ادغام را بررسی کردیم. یکی از مهم‌ترین مراحل در این فرآیند، بازبینی و مقایسه دقیق تغییرات پیشنهادی با کد پایه است. قبل از فشردن دکمه Merge، باید کاملاً مطمئن باشید که چه چیزی را به برنچ اصلی خود اضافه می‌کنید.

گیت و گیت‌هاب ابزارهای قدرتمندی برای مقایسه نسخه‌های مختلف کد در اختیار شما قرار می‌دهند. این ابزارها به شما اجازه می‌دهند تا تغییرات را به صورت خط به خط مشاهده کرده و از صحت و کیفیت آن‌ها اطمینان حاصل کنید. در این درس، با این ابزارها و تکنیک‌ها آشنا می‌شویم.

مقایسه برنچ‌ها در خط فرمان با git diff

قبل از اینکه حتی یک Pull Request ایجاد کنید، می‌توانید تغییرات را به صورت محلی در ترمینال خود مقایسه کنید. ابزار اصلی برای این کار، دستور git diff است. این دستور تفاوت بین کامیت‌ها، برنچ‌ها یا حتی فایل‌ها را به شما نشان می‌دهد.

برای مقایسه تفاوت‌های بین دو برنچ (مثلاً برنچ کاری شما و برنچ main)، می‌توانید از سینتکس دو نقطه یا سه نقطه استفاده کنید:

  • سینتکس دو نقطه (..): دستور git diff main..feature-branch تمام تغییراتی را که در feature-branch وجود دارد اما در main نیست، نمایش می‌دهد.
  • سینتکس سه نقطه (...): دستور git diff main...feature-branch تغییرات را از آخرین کامیت مشترک بین دو برنچ مقایسه می‌کند. این روش برای دیدن تغییراتی که فقط در برنچ شما ایجاد شده، مفیدتر است.
git diff main...feature/user-profile

خروجی این دستور ممکن است در ابتدا کمی گیج‌کننده باشد، اما به طور خلاصه خطوطی را که حذف شده‌اند با (-) و خطوطی را که اضافه شده‌اند با (+) نشان می‌دهد.

ابزار اصلی: تب "Files Changed" در Pull Request

اگرچه git diff در خط فرمان مفید است، اما ابزار اصلی و بسیار کاربرپسندتر برای بررسی تغییرات، تب Files Changed در صفحه Pull Request گیت‌هاب است. این بخش یک نمای بصری و تعاملی از تمام تغییرات ارائه می‌دهد.

ویژگی‌های کلیدی نمای "Files Changed"

  • نمای یکپارچه و نمای تقسیم‌شده (Unified vs. Split): شما می‌توانید انتخاب کنید که تغییرات را در یک نمای یکپارچه (خطوط حذف و اضافه شده زیر هم) یا یک نمای تقسیم‌شده (کد قدیمی و جدید در کنار هم) مشاهده کنید. نمای تقسیم‌شده معمولاً برای مقایسه راحت‌تر است.
  • رنگ‌بندی واضح: خطوط حذف‌شده با پس‌زمینه قرمز و خطوط اضافه‌شده با پس‌زمینه سبز مشخص می‌شوند که تشخیص تغییرات را بسیار آسان می‌کند.
  • کامنت‌گذاری روی خطوط: این قدرتمندترین ویژگی است. شما می‌توانید روی هر خط یا گروهی از خطوط کد کامنت بگذارید، سوال بپرسید یا پیشنهادی برای تغییر مطرح کنید. این کامنت‌ها هسته اصلی فرآیند بازبینی کد را تشکیل می‌دهند.
  • پنهان کردن فایل‌های مشاهده‌شده: در Pull Requestهای بزرگ، می‌توانید پس از بازبینی هر فایل، آن را «Viewed» علامت بزنید تا از دید شما پنهان شود و بتوانید روی سایر فایل‌ها تمرکز کنید.

به‌روز نگه داشتن برنچ قبل از ادغام

یکی از بهترین روش‌ها برای جلوگیری از تداخل (Conflict) و اطمینان از اینکه تغییرات شما با آخرین نسخه کد اصلی سازگار است، به‌روزرسانی برنچ کاری خود با آخرین تغییرات برنچ main قبل از درخواست برای ادغام نهایی است.

این فرآیند به «همگام‌سازی» یا syncing معروف است و به این صورت انجام می‌شود:

  1. ابتدا به برنچ main خود رفته و آخرین نسخه را از سرور دریافت کنید.
    git checkout main
    git pull origin main
  2. سپس به برنچ کاری خود بازگردید.
    git checkout feature/user-profile
  3. و در نهایت، تغییرات جدید main را در برنچ خود ادغام کنید.
    git merge main

اگر در این مرحله تداخلی رخ دهد، شما آن را به صورت محلی و قبل از ادغام نهایی حل می‌کنید. پس از حل تداخل و اطمینان از اینکه همه چیز به درستی کار می‌کند، می‌توانید با خیال راحت push کرده و منتظر ادغام نهایی Pull Request خود باشید.