Pull Request — مشارکت در پروژههای دیگران
مسیر کامل مشارکت متنباز: Fork → Clone → شاخه → تغییرات → Push → Pull Request — از صفر تا merge.
Pull Request چیست؟
Pull Request (PR) یعنی: «من روی کد شما کار کردم؛ لطفاً تغییراتم را بکشید (pull) و ادغام کنید». PR قلب مشارکت در گیتهاب است — هم برای تیمهای داخلی و هم برای پروژههای متنباز.
مسیر کامل مشارکت متنباز
سناریو: میخواهید یک باگ را در پروژه متنباز someone/awesome-project رفع کنید:
قدم ۱: Fork کنید
در گیتهاب، دکمه Fork را بزنید → your-username/awesome-project
قدم ۲: Clone کنید (از Fork خودتان!)
git clone git@github.com:your-username/awesome-project.git
cd awesome-project
git remote add upstream https://github.com/someone/awesome-project.git
قدم ۳: شاخه بسازید
# همیشه از آخرین main شروع کنید:
git switch main
git fetch upstream && git merge upstream/main
# شاخه با نام گویا:
git switch -c fix/navbar-mobile-bug
خیلی از پروژههای متنباز در فایل CONTRIBUTING.md قوانین مشارکتشان را نوشتهند — قبل از شروع حتماً بخوانید!
قدم ۴: تغییرات را انجام دهید و کامیت کنید
# ... رفع باگ ...
git add .
git commit -m "رفع نمایش نوار منو در موبایل"
قدم ۵: Push به Fork خودتان
git push -u origin fix/navbar-mobile-bug
قدم ۶: ساخت Pull Request
- وارد Fork خودتان در گیتهاب شوید
- بنر زرد Compare & pull request را بزنید (یا تب Pull Requests → New)
- مهم — مقصد درست را انتخاب کنید:
- base: someone/awesome-project ← main (مخزن اصلی!)
- compare: your-username/awesome-project ← fix/navbar-mobile-bug
- چه مشکلی را حل کردید؟ (با لینک Issue اگر هست)
- چطور حل شد؟
- چطور تستش کردید؟
قدم ۷: بازبینی و بحث
نگهدارندگان (Maintainers) پروژه کد شما را بررسی میکنند:
- ممکن است نظر بدهند یا تغییر بخواهند — روی همان شاخه کامیت و push کنید، PR خودکار بهروز میشود
- بعضی پروژهها CI خودکار دارند — تستها باید سبز شوند ✅
- صبور باشید — پروژههای بزرگ ممکن است روزها/هفتهها پاسخ ندهند
قدم ۸: Merge!
اگر تأیید شد، نگهدارنده PR شما را merge میکند — نام شما برای همیشه در contributors پروژه ثبت میشود! 🎉
الگوی خوب توضیح PR
## توضیح مشکل
منوی نوار بالا در صفحات موبایل (زیر ۷۶۸px) نمایش داده نمیشود.
Issue مرتبط: #123
## راهحل
media query مربوطه در navbar.css اصلاح شد.
## تست
- در Chrome و Firefox با عرض ۳۷۵px بررسی شد
- تست واحد مربوطه اضافه شد
نکات طلایی PR خوب
- کوچک بفرستید — PR کوچک سریعتر بازبینی و merge میشود
- یک PR یک کار — باگ و قابلیت جدید را قاطی نکنید
- توضیح کامل — بازبین ذهن شما را نمیتواند بخواند!
- از main بهروز شروع کنید — تعارض کمتر
- محترمانه بحث کنید — نظر بازبین برای بهتر شدن کد شماست
خلاصه
- مسیر متنباز: Fork → Clone → شاخه → تغییر → Push → PR
- مقصد PR: مخزن اصلی (base) از Fork شما (compare)
- CONTRIBUTING.md پروژه را بخوانید
- PR کوچک + توضیح خوب = merge سریع
این مبحث بخشی از دوره آموزش کامل Git است.