اولین باری که در مورد منبع باز یاد گرفتم از طریق توییتی بود که Hacktoberfest را در سال 2019 تبلیغ کرد. و اولین درخواست جذب من که تا به حال پذیرفته شد اضافه کردن عنوان کتاب به صورت ایموجی به لیست بود.

ممکن است فکر کنید، “شما نمی توانید آن را به عنوان یک مشارکت منبع باز حساب کنید. این یک شوخی است!”

من خودم همین فکر را داشتم – تا همین اواخر. خیس شدن پاهایم در منبع باز دلهره آور بود، با این حال از آن عبور کردم. و با نگاهی به گذشته، از اولین مشارکت چیزهای زیادی یاد گرفتم.

به عنوان یک تازه کار که چیزی در مورد منبع باز نمی دانستم، یاد گرفتم که چگونه با نگهدارنده ها ارتباط برقرار کنم، چگونه با Git و GitHub کار کنم و چگونه یک درخواست کشش ایجاد کنم. این یک منحنی یادگیری بزرگ بود!

این یکی از دلایلی است که من این راهنما را نوشتم: اینکه سفر شما در مشارکت در پروژه‌های منبع باز هموارتر و کمتر دلهره‌آور باشد.

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

بدون مقدمه، بیایید شروع کنیم!

فهرست مطالب

  • پیش نیازها
  • آیا همه پروژه های GitHub منبع باز هستند؟
  • چگونه یک مخزن را فورک کنیم
  • نحوه کلون کردن یک مخزن
  • چگونه یک شعبه جدید ایجاد کنیم
  • نحوه اضافه کردن تغییرات به ناحیه مرحله بندی
  • نحوه انجام تغییرات
  • نحوه همگام سازی تغییرات
  • چگونه تضادهای ادغام را حل کنیم
  • چگونه تغییرات را تحت فشار قرار دهیم
  • نحوه ایجاد یک درخواست کشش
  • کلمات پایانی

پیش نیازها

برای دنبال کردن این آموزش، به موارد زیر نیاز دارید:

  • یک حساب GitHub
  • یک ویرایشگر کد مانند VSCode روی دستگاه شما نصب شده است.

آیا همه پروژه های GitHub منبع باز هستند؟

هنگامی که شما علاقه مند به مشارکت هستید، باید مطمئن شوید که پروژه ای که به آن علاقه دارید منبع باز است. شما نمی توانید فرض کنید که همه پروژه های GitHub متن باز هستند.

در این بخش، آنچه را که باید بررسی کنید تا بدانید یک پروژه منبع باز است را به اشتراک می‌گذارم.

مجوز

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

در اکثر حوزه‌های قضایی، پروژه‌ای بدون مجوز به‌طور خودکار به‌عنوان «همه حقوق محفوظ است» توسط مالک آن مجوز می‌گیرد. این بدان معنی است که هیچ کس نمی تواند بدون اجازه مالک از پروژه استفاده کند، تغییر دهد یا دوباره توزیع کند. اگر آن را نادیده بگیرید، آنها می توانند از نظر قانونی از شما شکایت کنند.

لایسنس را می توانید در فایلی به نام پیدا کنید LICENSE. معمولاً در بخش “درباره” مخزن مشاهده می کنید.

repo-about-section-github-2
مجوز MIT در بخش “درباره” در نوار کناری سمت راست یک مخزن در GitHub

راهنمای مشارکت

اکثر پروژه های منبع باز زمانی که دارای راهنمای مشارکت باشند، آماده دریافت مشارکت هستند. این راهنما شامل همه چیزهایی است که شما باید در مورد نحوه مشارکت در پروژه بدانید، از باز کردن یک موضوع تا ایجاد یک درخواست کشش. از کد رفتاری گرفته تا سبک ارتباطی مورد انتظار.

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

معمولاً، بخشی در مورد راهنمای مشارکت در README پیدا خواهید کرد. اما اگر نتوانستید آن را در آنجا پیدا کنید، به دنبال فایلی به نام بگردید CONTRIBUTING.md یا هر چیز مشابه

موضوع جشنواره هکتوبر

Hacktoberfest یک رویداد سالانه در ماه اکتبر است که توسط DigitalOcean برای پشتیبانی از منبع باز حمایت می شود.

برای شرکت در این رویداد و بررسی و شمارش درخواست‌های جذب خود، باید قبل از مشارکت، بررسی کنید که آیا پروژه‌ای در Hacktoberfest مشارکت دارد یا خیر.

پروژه شرکت کننده در رویداد باید دارای یک hacktoberfest موضوعی که می توانید در قسمت “درباره” صفحه اصلی مخزن برچسب گذاری شده پیدا کنید.

پیشنهاد می‌کنیم بخوانید:  مرتب‌سازی حبابی و مرتب‌سازی کوکتل در جاوا اسکریپت مرتب‌سازی حباب، که گاهی اوقات به عنوان مرتب‌سازی غرق‌شده نیز شناخته می‌شود، یکی از شناخته‌شده‌ترین الگوریتم‌های مرتب‌سازی است. این معمولاً یکی از اولین الگوریتم‌های مرتب‌سازی است که دانش‌آموزان CS به دلیل سادگی و این واقعیت که کاملاً شهودی و آسان برای ترجمه به کد هستند با آن مواجه می‌شوند.
about-repository-github
بخش «درباره» در نوار کناری سمت راست یک مخزن با hacktoberfest به عنوان یکی از موضوعات – اعتبار: AliceWonderland/hacktoberfest

چگونه یک مخزن را فورک کنیم

بنابراین، شما آماده هستید تا در یک مخزن انتخابی خود مشارکت کنید. اولین کاری که باید انجام دهید این است که مخزن را فورک کنید.

فورک به معنای ایجاد یک کپی از یک مخزن در حساب GitHub شما است.

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

طبق قرارداد، مخزن انشعابی شما به نام the origin مخزن، در حالی که مخزن اصلی همان است upstream مخزن من از این پس از این نام مستعار برای متمایز کردن آنها استفاده خواهم کرد.

در صفحه اصلی مخزن در GitHub، روی آن کلیک کنید Fork دکمه بالا سمت راست:

دکمه چنگال
Fork دکمه در GitHub

شما را به فرم “ایجاد فورک جدید” هدایت می کند. می توانید ورودی ها را همانطور که هست رها کنید. سپس روی دکمه سبز رنگ «ایجاد چنگال» در پایین کلیک کنید.

ایجاد-چنگال جدید
آ Create a new fork با رنگ سبز فرم دهید Create fork دکمه در GitHub

با این کار یک کپی از مخزن در حساب GitHub شما ایجاد می شود.

نحوه کلون کردن یک مخزن

پس از فورک کردن مخزن، کار بعدی این است که آن را شبیه سازی کنید.

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

در اینجا مراحلی وجود دارد که باید دنبال کنید:

مرحله شماره 1 – به مخزن فورک شده بروید

با این مراحل به مخزن فورکی خود بروید:

  • روی آواتار خود در بالا سمت راست کلیک کنید.
  • کلیک Your repositories در منوی کشویی
  • روی مخزنی که می خواهید کلون کنید کلیک کنید تا باز شود.

سپس روی رنگ سبز کلیک کنید <> Code دکمه. URL HTTPS را با کلیک کردن روی نماد کپی کپی کنید.

برای اطمینان از اینکه مخزن فورک شده را شبیه سازی می کنید، باید نام کاربری GitHub خود را در پیوند مشاهده کنید. مثلا:

https://github.com/<github-username>/<repository-name>.git

به این معنا که:

آواتار-گیتهاب
آواتار کاربر در GitHub
dropdown-github-1
منوی کشویی در GitHub که برجسته می شود Your repositories
clone-github-resize-2
یک سبز <> Code دکمه و یک نشانی اینترنتی HTTPS یک مخزن به دنبال نماد کپی در GitHub

مرحله شماره 2 – پروژه را به صورت محلی کلون کنید

در ترمینال خود، را اجرا کنید git clone دستور به همراه URL که کپی کردید:

git clone <copied-url>

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

cd <project-name>

چگونه یک شعبه جدید ایجاد کنیم

بهترین روش در متن باز این است که هر زمان که می خواهید روی موضوعی کار کنید، یک شعبه جدید ایجاد کنید. یک شاخه جدید تغییرات شما را جدا می کند و آن را حفظ می کند main شاخه تمیز

این دستور را برای ایجاد یک شاخه جدید اجرا کنید و به آن بروید:

git checkout -b <branch-name>

اگرچه می‌توانید هر نامی به یک شاخه بدهید، اما باید از قراردادهای مربوط به نام‌گذاری یک شاخه پیروی کنید. نام شعبه معمولاً به تغییری که انجام می دهید اشاره دارد. مثلا، feature/add-dark-mode یا bugfix/broken-link-to-about-page.

اکنون می توانید شروع به ایجاد تغییرات در شعبه جدید خود کنید.

نحوه اضافه کردن تغییرات به ناحیه مرحله بندی

فرض کنید کار روی تغییرات را تمام کرده اید. قبل از ارتکاب، ابتدا باید آنها را به قسمت صحنه اضافه کنید.

این مرحله به شما این امکان را می دهد که تغییرات خود را حفظ کنید در حالی که هنوز می توانید قبل از انجام آنها را تغییر دهید. همچنین به شما امکان می‌دهد انتخاب کنید که کدام تغییر(های) را آماده انجام دهید.

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

نحوه اضافه کردن فایل های منفرد یا چندگانه به ناحیه مرحله بندی

هنگامی که می خواهید یک یا چند فایل – اما نه همه – را به قسمت مرحله اضافه کنید، این دستور را اجرا کنید:

git add <file-name-1> <file-name-2>

مثلا:

git add README.md CONTRIBUTING.md

دستور بالا را اضافه می کند README.md و CONTRIBUTING.md فایل ها به منطقه صحنه سازی

وقتی فایل(های) تودرتو را به ناحیه مرحله بندی اضافه می کنید، می خواهید مسیر(های) را به فایل(ها) اضافه کنید. اگر نمی توانید مسیر دقیق را مشخص کنید، بدوید git status به شما کمک می کند تا وضعیت فایل هایی را که حاوی تغییرات شما هستند به شما ارائه دهد.

در اینجا نحوه انجام آن آمده است:

اجرا کن git status در ترمینال شما چیزی شبیه به این خواهید دید:

git-status-modified-files-4
git status نشان دادن مسیرهای سه فایل اصلاح شده در ترمینال VSCode

مسیر را کپی کرده و اجرا کنید git add دستور به همراه مسیر(های) فایل(ها):

git add <path-to-file-1> <path-to-file-2>

در اینجا نمونه ای از افزودن مسیر به دو فایل بر اساس تصویر بالا آورده شده است:

git add app/routes/__frontend/resources/index.mdx app/routes/__frontend/resources/developer-resources/open-source/index.mdx

نحوه اضافه کردن همه فایل ها

هنگامی که می خواهید همه فایل ها را به قسمت مرحله اضافه کنید، این دستور را اجرا کنید:

پیشنهاد می‌کنیم بخوانید:  رندر/نمایش شرطی در Vue با v-if، v-show، v-else و v-else-ifVue.js یک چارچوب برنامه وب ساده برای ایجاد رابط های وب پویا و برنامه های تک صفحه ای (SPA) است. همانطور که ما این برنامه ها را ایجاد می کنیم، اغلب، می خواهیم چیزی را بر اساس رندر کنیم روی یک معیار خاص - این جوهر رندر مشروط است. رندر شرطی به توانایی رندر متمایز اشاره دارد...

git add .

این همه فایل‌ها را با تغییراتی به قسمت مرحله‌بندی اضافه می‌کند.

نحوه انجام تغییرات

commit به معنای ثبت تغییرات است. به همین دلیل است که یک commit به یک پیام به عنوان رکورد نیاز دارد. با گذشت زمان، commit ها داستان تاریخ پروژه را بازگو خواهند کرد. بنابراین، یک پیام تعهد واضح و توصیفی ضروری است.

آنچه باید هنگام انجام تغییرات خود بدانید:

  • تغییرات خود را اغلب اضافه کنید و انجام دهید. بهترین زمان برای اضافه کردن و انجام تغییرات هر بار است که ایجاد یک تغییر معنی دار را به پایان می رسانید، حتی اگر این یک تغییر کوچک باشد. متعهد شدن کار خود پس از اتمام نیز از انتقال تغییرات شما به شاخه های دیگر جلوگیری می کند.
  • از یک پیام واضح و توصیفی استفاده کنید. “تغییر رنگ پس زمینه از مشکی به آبی تیره” بیشتر از “سبک اصلاح” توصیفی و برای همه آسان است.

برای ایجاد یک commit، این دستور را در ترمینال خود اجرا کنید:

git commit -m "Your message"

در اینجا یک مثال از یک خط commit آورده شده است:

git commit -m "Fix the link to the About page"

و در اینجا یک commit با چندین خط وجود دارد:

git commit -m "Fix the link to the About page
Fix the typos in the About page"

نحوه همگام سازی تغییرات

وقتی روی تغییرات کار می کنید، این احتمال وجود دارد که main شاخه بر روی upstream مخزن قبلاً در برخی از درخواست های کششی ادغام شده است. بنابراین، وضعیت از origin و مخازن محلی شما در این زمان دیگر مانند مخازن نخواهند بود upstream.

به همین دلیل، همیشه باید شعبه کاری محلی خود را به روز کنید تا همان حالت را فشار دهید upstream مخزن

نحوه به روز رسانی origin مخزن

ابتدا به origin مخزن در GitHub برای بررسی اینکه آیا به روز است یا خیر upstream.

شما می توانید تغییرات خود را زمانی که هیچ تغییری در آن وجود ندارد، فشار دهید upstream مخزن

برای دانستن اینکه آیا origin مخزن به‌روز است، پیامی را مشاهده می‌کنید که می‌گوید: “این شاخه با به روز است” در صفحه اصلی مخزن، همانطور که در تصویر زیر نشان داده شده است:

به روز شعبه-github-1
یک شعبه به روز در origin مخزن در GitHub

اما زمانی که تغییراتی ایجاد شود، پیامی خواهید دید که می گوید: “این شاخه X commit(های) پشت <مخزن و نام شعب> است”.

branch-x-commits-behind-github-2
پیامی که نشان دهنده یک شاخه در origin مخزن هشت commit پشت سر است upstream مخزن در GitHub

برای به روز رسانی origin مخزن:

  1. کلیک کنید بر روی Sync fork دکمه کشویی
  2. روی سبز کلیک کنید Update branch دکمه.
به روز رسانی-شاخه
این Sync fork و Update branch دکمه های GitHub

پس از به‌روزرسانی، اعلان «واکشی با موفقیت و فوروارد سریع از بالادست <نام‌های مخزن و شعب>» را در بالا مشاهده خواهید کرد.

با موفقیت واکشی-1
اعلان “با موفقیت واکشی و فوروارد سریع از بالادست” در GitHub

چگونه تغییرات را بکشیم

حالا که شما origin به روز است upstream مخزن، وقت آن است که تغییرات را اعمال کنید و مخزن محلی خود را به روز کنید.

Pull راهی برای دریافت تغییرات جدید از راه دور به مخزن محلی است.

برای ایجاد تغییرات، مطمئن شوید که در شاخه کاری خود هستید. با دویدن می توانید این کار را انجام دهید git status:

git-status-branch
git status نشان دادن نام شعبه

را اجرا کنید git pull فرمان برای برداشتن تغییرات از main شعبه در origin مخزن:

git pull origin main

اگر نیازی به حل تعارض ندارید، اکنون می توانید تغییرات خود را فشار دهید.

چگونه تضادهای ادغام را حل کنیم

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

مواجهه با این تضادها در پروژه های منبع باز معمول است. تداخل ادغام معمولاً زمانی رخ می دهد که تغییراتی در یک خط(های) و فایل(ها) از دو شاخه مختلف وجود داشته باشد.

هنگامی که یک تضاد ایجاد می شود، گزینه هایی برای پذیرش تغییرات در بالای فضای کاری خود در VSCode خواهید دید. همچنین تغییر(های) دیگری متفاوت از تغییر خود خواهید دید – تغییر ورودی.

git-conflict
گزینه هایی برای پذیرش تغییر، تغییر فعلی و تغییر ورودی در VSCode

نحوه رفع تضادهای ادغام

هنگامی که می خواهید یک تضاد را حل کنید، می توانید از بین گزینه های مختلف انتخاب کنید:

  • تغییر فعلی را بپذیرید: زمانی که می خواهید فقط تغییرات خود را حفظ کنید.
  • تغییرات ورودی را بپذیرید: وقتی می خواهید فقط تغییرات ورودی را بپذیرید که مال شما نیست.
  • هر دو تغییر را بپذیرید: زمانی که می خواهید تغییرات خود و تغییرات ورودی را بپذیرید.

شما همچنان می توانید در صورت لزوم پس از انتخاب اقدام مطلوب، موارد را اصلاح کنید.

پس از رفع تضادها، سپس می توانید تغییرات خود را به قسمت مرحله اضافه کنید و آنها را انجام دهید.

از آنجایی که شما تغییرات را در یک فایل موجود اضافه کرده و انجام می دهید، می توانید این دستور را برای انجام هر دو عمل به طور همزمان اجرا کنید:

git commit -am "Your message"

چگونه تغییرات را تحت فشار قرار دهیم

اکنون زمان آن است که تغییرات خود را تحت فشار قرار دهید. این به معنای انتقال تغییرات از مخزن محلی به مخزن راه دور است.

شما همیشه می خواهید تغییرات خود را به آن فشار دهید origin مخزن برای انجام این کار، این دستور را در ترمینال خود اجرا کنید:

git push origin <branch-name>

این احتمال وجود دارد که این پیغام خطا را دریافت کنید:

no-upstream-branch-1
git push پیام “مرگبار: شاخه فعلی شاخه بالادستی ندارد.”

می توانید دستور را در پیام خطا در ترمینال خود کپی، پیست و اجرا کنید:

git push --set-upstream origin <branch-name>

همچنین می توانید این دستور را اجرا کنید:

git push -u origin <branch-name>

نحوه ایجاد درخواست کشش

درخواست کشش – که معمولاً PR نامیده می شود – راهی است برای اطلاع دیگران از اینکه یک شعبه با تغییرات به یک مخزن راه دور منتقل شده است.

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

نحوه ایجاد یک درخواست کشش

ابتدا به upstream یا origin مخزن در GitHub.

سپس روی سبز کلیک کنید Compare & pull request دکمه تغییر مسیر به Open a pull request فرم:

مقایسه-و-کشیدن-درخواست1
سبز Compare & pull request دکمه در GitHub

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

اگر الگوی درخواست کشش وجود ندارد، می توانید درخواست کشش را به صورت ساختاریافته بنویسید. هنگام نوشتن درخواست کشش خود به این نکته توجه کنید:

  • عنوانی کوتاه، واضح و آموزنده.
  • توضیح واضح تغییرات
  • لینک موضوع مرتبط به عنوان مثال، “Closes #456”.
  • اسکرین شات یا ضبط صفحه در صورت لزوم.

در آخر روی سبز کلیک کنید Create pull request دکمه در پایین برای ایجاد روابط عمومی.

ایجاد-کشیدن-درخواست-دکمه
سبز Create pull request در GitHub

کلمات پایانی

مشارکت در پروژه‌های متن‌باز می‌تواند دلهره‌آور باشد و باعث شود در ابتدا احساس ترس کنید. اما مانند سایر مهارت ها، با تمرین مداوم، بهتر خواهید شد.

علاوه بر درک Git و GitHub، جنبه های غیر فنی منبع باز وجود دارد که شما نیز باید بدانید.

و به محض دستیابی، منبع باز می تواند بسیار سرگرم کننده باشد!

اگر این مقاله را دوست داشتید و لذت بردید، لطفا آن را با دیگران به اشتراک بگذارید. شما می توانید کارهای دیگر من را در وبلاگ من پیدا کنید و بیایید با هم ارتباط برقرار کنیم X (تویتر سابق) یا لینکدین!