نحوه‌ی مشارکت در پروژه‌های GitHub به کمک Visual Studio
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: چهار دقیقه

فرض کنید برای رفع باگی در پروژه‌ای از GitHub، ایده‌ای دارید. روند کاری اعلام آن، روش‌های مختلفی می‌تواند داشته باشند؛ از باز کردن یک Issue جدید تا فرستادن یک فایل zip و غیره. اما روش استاندارد مشارکت در پروژه‌های Git، ارسال یک PR یا Pull Request است. در ادامه نحوه‌ی انجام این‌کار را به کمک امکانات توکار VS.NET بررسی خواهیم کرد.


ایجاد یک Fork جدید در GitHub

برای ارسال تغییرات انجام شده بر روی یک پروژه، نیاز است به صاحب یا مسئول آن مخزن در GitHub مراجعه و سپس درخواست دسترسی اعمال تغییرات را نمود. در این حالت، احتمال اینکه جواب منفی دریافت کنید، بسیار زیاد است. جهت مدیریت یک چنین مواردی، قابلیتی به نام ایجاد یک Fork پیش بینی شده‌است.


در بالای هر مخزن کد در GitHub، یک دکمه به نام Fork موجود است. بر روی آن که کلیک کنید، یک کپی از آن پروژه را به مجموعه‌ی مخزن‌های کد شما در GitHub اضافه می‌کند. بدیهی است در این حالت، مجوز ارسال تغییرات خود را به GitHub و در اکانت خود خواهید داشت. نحوه‌ی اطلاع رسانی این تغییرات به صاحب اصلی این مخزن کد، ارسال همان PR یا Pull Request است.


دریافت مخزن کد Fork شده از GitHub به کمک Visual Studio

پس از اینکه Fork جدیدی را از پروژه‌ای موجود ایجاد کردیم، نیاز است یک Clone یا کپی مطابق اصل آن‌را جهت اعمال تغییرات محلی، تهیه کنیم. برای اینکار VS.NET را گشوده و به برگه‌ی Team Explorer آن که در کنار Solution Explorer قرار دارد، مراجعه کنید.


در اینجا بر روی دکمه‌ی Connect در نوار ابزار آن، کلیک کرده و در صفحه‌ی باز شده، بر روی لینک Clone کلیک نمائید. در اینجا می‌توان آدرس مخزن کد Fork شده را جهت تهیه یک Clone مشخص کرد؛ به همراه محلی که قرار است این Clone در آن ذخیره شود.
آدرس HTTPS وارد شده، در کنار تمام مخازن کد GitHub قابل مشاهده هستند:


پس از تکمیل این دو آدرس، بر روی دکمه‌ی Clone کلیک نمائید. پس از پایان کار، اگر به آدرس محلی داده شده بر روی کامپیوتر خود مراجعه کنید، یک کپی از فایل‌های این مخزن، قابل مشاهده هستند.


اعمال تغییرات محلی و ارسال آن به سرور GitHub

در ادامه، این پروژه‌ی جدید را در VS.NET باز کرده و تغییرات خود را اعمال کنید. اکنون نوبت به ارسال این تغییرات به سرور GitHub است.  برای این منظور به برگه‌ی Team Explorer مراجعه کرده و بر روی دکمه‌ی Home آن کلیک کنید. سپس گزینه‌ی Changes را انتخاب نمائید:


در اینجا توضیحاتی را نوشته و سپس بر روی دکمه‌ی Commit کلیک کنید.


پس از هماهنگ سازی محلی، اکنون نوبت به هماهنگ سازی این تغییرات با مخزن کد GitHub است. بنابراین بر روی لینک Sync در پیام ظاهر شده کلیک کنید و در صفحه‌ی بعدی نیز بر روی دکمه‌ی Sync کلیک نمائید:



اکنون اگر به پروژه‌ی GitHub خود مراجعه کنید، این تغییر جدید قابل مشاهده‌است:



مطلع سازی صاحب اصلی مخزن کد از تغییرات انجام شده

تا اینجا کسی از تغییرات جدید انجام شده‌ی توسط ما باخبر نیست. برای اطلاع رسانی در مورد این تغییرات، به مخزن کد Fork شده که اکنون تغییرات جدید به آن ارسال شده‌اند، مراجعه کنید. سپس در کنار صفحه بر روی لینک Pull request کلیک نمائید:


در اینجا بر روی دکمه‌ی New pull request کلیک کنید:


در ادامه تغییرات ارسال شما نمایش داده خواهند شد. آن‌ها را بررسی کرده و مجددا بر روی دکمه‌ی Create pull request کلیک کنید:


در اینجا عنوان و توضیحاتی را وارد کرده و سپس بر روی دکمه‌ی Create pull request کلیک نمائید:



یکی سازی تغییرات با مخزن اصلی

اکنون صاحب اصلی مخزن کد یک ایمیل را دریافت خواهد کرد؛ همچنین اگر به مخزن کد خود مراجعه نماید، آمار Pull requests دریافتی قابل مشاهده است:


پس از انتخاب یکی از آن‌ها، لینکی برای بررسی تغییرات انجام شده و همچنین دکمه‌ای برای یکی سازی آن‌ها با پروژه‌ی اصلی وجود دارد:



دریافت این تغییرات در مخزن کد محلی توسط صاحب اصلی پروژه

اکنون که این تغییرات با پروژه‌ی اصلی Merge و یکی شده‌اند، صاحب اصلی پروژه جهت تهیه‌ی یک کپی محلی و بهبود یا تغییر آن‌ها می‌تواند به صورت ذیل عمل کند:


ابتدا به برگه‌ی Team explorer مراجعه کرده و بر روی دکمه‌ی Home آن کلیک کنید. سپس گزینه‌ی Unsynced commits را انتخاب نمائید. در صفحه‌ی باز شده بر روی دکمه‌ی Sync کلیک نمائید. به این ترتیب آخرین تغییرات را از مخزن کد GitHub به صورت خودکار دریافت خواهید کرد:

 
  • #
    ‫۹ سال و ۷ ماه قبل، یکشنبه ۲۶ بهمن ۱۳۹۳، ساعت ۱۵:۴۸
    چطور می‌تونیم سورس خودمون رو با آخرین تغییرات انجام شده روی سورس اصلی sync کنیم؟
    • #
      ‫۹ سال و ۷ ماه قبل، یکشنبه ۲۶ بهمن ۱۳۹۳، ساعت ۱۶:۱۹
      باید عملیات pull commits انجام شود؛ در همان برگه‌ی Unsynced commits.
  • #
    ‫۶ سال و ۷ ماه قبل، جمعه ۲۰ بهمن ۱۳۹۶، ساعت ۱۵:۰۲
    یک نکته‌ی تکمیلی: چگونه یک مخزن Fork شده‌ی Git را به روز رسانی کنیم؟

    اگر پس از مدتی، مجددا نیاز به کار با مخزن Fork شده‌ی خود را داشته باشید، احتمالا این مخزن هم اکنون دیگر با مخزن اصلی که از آن Fork شده، هماهنگ نیست و قدیمی شده‌است. به همین جهت نیاز است در مخزن محلی خود (Clone ایی که از این Fork بر روی سیستم خود دارید)، این دستورات را صادر کنید تا هم این مخزن محلی و هم مخزن راه دور GitHub شما، هر دو با مخزن اصلی هماهنگ شوند:
    git remote add upstream https://github.com/user/project_name.git
    git pull upstream master
    git push -f origin master
    در این دستورات https://github.com/user/project_name.git به آدرس مخزن اصلی که از آن Fork را تهیه کرده‌اید، اشاره می‌کند.
  • #
    ‫۵ سال و ۷ ماه قبل، شنبه ۶ بهمن ۱۳۹۷، ساعت ۱۴:۳۵
    یک نکته‌ی تکمیلی: چگونه یک Release خودکار را در GitHub ایجاد کنیم؟
    اگر پروژه‌ی خود را به GitHub ارسال کرده‌اید و پس از آن یک بسته‌ی نیوگت را هم بر اساس این نگارش تهیه و منتشر کرده‌اید، می‌توانید یک release خودکار را به صورت زیر در GitHub ایجاد کنید:
    git tag -a 1.6.7 -m "Published 1.6.7 to nuget.org"
    git push --follow-tags
    دستور اول بر اساس نگارش مدنظر شما (برای مثال 1.6.7 در اینجا)، یک Tag را ایجاد می‌کند. دستور دوم آن‌را به GitHub ارسال می‌کند که سبب تولید خودکار یک release جدید در برگه‌ی releases پروژه نیز می‌شوند. توضیحاتی که پس از m- ذکر شده‌اند، در برگه‌ی releases به عنوان توضیح آن نگارش خاص قابل مشاهده خواهند بود.
  • #
    ‫۵ سال و ۱ ماه قبل، شنبه ۱۲ مرداد ۱۳۹۸، ساعت ۱۹:۱۰
    یک نکته‌ی تکمیلی: چگونه یک Pull Request ارسالی را به روز کنیم؟
    - ابتدا تغییرات مدنظر را به مخزن کد محلی خود اعمال کنید (همان مخزنی که معادل نمونه‌ی fork شده‌ی مخزن راه دور است).
    - سپس این تغییرات را به مخزن کد fork شده موجود در GitHub نیز اعمال کنید.
    با اینکار Pull request شما در GitHub نیز به صورت خودکار به روز رسانی می‌شود.