Future ForgeFuture ForgeFuture ForgeFuture Forge
خدماتنمونه‌کارهاپکیج‌هاابزارهای رایگانیادداشت‌هادرباره ماتماس
شروع پروژه
  1. خانه
  2. /یادداشت‌ها
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

خدمات

طراحی و ساخت محصولتوسعه فول‌استکممیزی مهندسیمشاوره معماریزیرساخت و استقرارهوش مصنوعی در محصول

کاوش

نمونه‌کارهایادداشت‌هاپرسش‌هاپکیج‌ها

ابزارهای رایگان

ممیزی مهندسیمشاور معماریتخمین پروژهابزار پرامپت

شرکت

درباره ماتماسحریم خصوصیشرایط استفاده

پروژه‌تان را مطرح کنید

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. همه حقوق محفوظ است.

خانهخدماتابزارهای رایگانشروع پروژه
واژه‌نامه

Pull Request چیست؟ پیشنهاد ادغام با Review قبل از ورود به main

Pull Request لایهٔ همکاری روی Git: پیشنهاد ادغام Branch، بحث، CI و Merge — تفاوت با merge محلی، Draft PR و چک‌لیست کیفیت؛ از GitHub Docs.

سا
سهیل ابراهیم‌پور

بنیان‌گذار و مهندس محصول

·۲۹ شهریور ۱۴۰۵·6 دقیقه مطالعه
Pull Request چیستPRmerge requestcode reviewdraft PRGitHub pull request
صفحه PR و چک‌لیست ریویو

Merge محلی تاریخچه را عوض می‌کند؛ Pull Request (PR) روی GitHub یک گفت‌وگوی ساخت‌یافته دور همان پیشنهاد ادغام است: diff، کامنت، CI، و مجوز Merge. مسئله‌ای که حل می‌کند این است که تغییر قبل از رسیدن به main دیده، تست و مستند شود — نه اینکه فقط روی ماشین یک نفر git merge بخورد.

مقالهٔ ۰۷۸ تفاوت نام PR و Merge Request را گفت؛ اینجا عمق فرآیند: PR چه هست، چه نیست، Draft، اندازهٔ خوب، و پیوند با Branch protection. خودِ Git فرمان «pull request» ندارد؛ این لایهٔ هاست است.

Branch تا Open PR تا Review تا Merge

پاسخ کوتاه

طبق GitHub Docs، Pull Request به دیگران اعلام می‌کند که یک Branch تغییراتی دارد و می‌خواهید آن‌ها را وارد Branch دیگری (معمولاً main) کنید. در صفحهٔ PR می‌توانید diff را دید، بحث کرد، Commit جدید Push کرد و در نهایت با یکی از روش‌های merge/squash/rebase ادغام کرد — اگر چک‌ها و Review لازم برقرار باشند.

PR واحد تحویل تغییر در تیم مدرن است: کد + زمینه + شواهد CI، نه فقط فایل‌های عوض‌شده.

چه مسئله‌ای را در تیم حل می‌کند؟

  • بازبینی قبل از ورود به خط پایدار.
  • ردپای تصمیم‌ها در کامنت‌ها برای نفر بعدی.
  • اتصال به Issue، طراحی و چک‌لیست.
  • اجرای خودکار تست روی هر Push به Branch PR.
  • کنترل دسترسی: همه Push به main ندارند، ولی می‌توانند PR باز کنند.

بدون PR، یا همه به main دسترسی مستقیم دارند (ریسک)، یا گلوگاه «لید خودش Merge می‌کند بدون زمینه».

آناتومی یک PR خوب

  1. عنوان روشن که منظور را بگوید.
  2. بدنه: چرا، چگونه تست شد، ریسک، اسکرین/لینک Issue.
  3. اندازهٔ بازبینی‌پذیر؛ در صورت لزوم چند PR.
  4. Branch به‌روز نسبت به پایه برای Conflict کمتر.
  5. CI سبز و پاسخ به کامنت‌های Blocking.

Draft PR اعلام می‌کند «هنوز برای Review نهایی نیامده» ولی می‌تواند بازخورد زودهنگام بگیرد. Ready for review وقتی است که نویسنده واقعاً وقت Reviewer را می‌خواهد.

جدول: PR در برابر فقط Push به main

ابعادPush مستقیم به mainاز مسیر PR
بازبینیاختیاری / بعد از حادثهقبل از ادغام
CI به‌عنوان دروازهاغلب دیرروی هر پیشنهاد
مستند تصمیمچت پراکندهکنار diff
Rollback ذهنیکدام تغییر؟واحد PR/Commit
سرعت ظاهریسریع‌تر در لحظهکمی سربار؛ کمتر آتش‌سوزی

جریان کاری نمونه

bash

git switch -c feature/paywall # ... commits ... git push -u origin feature/paywall # سپس در GitHub: Compare & pull request

بعد از باز شدن PR: Review (۲۰۹)، رفع کامنت با Commitهای جدید، حل Conflict اگر لازم، و Merge طبق سیاست مخزن. حذف Branch بعد از Merge بهداشت است.

اندازه و دامنه: مشکل PR غول‌پیکر

PR هزارخطی با پنج موضوع قاطی Review را سطحی می‌کند. بهتر است: جدا کردن refactor مکانیکی از تغییر رفتاری، و توضیح در بدنه اگر جداسازی ممکن نیست. Squash در پایان تاریخچهٔ main را خلوت می‌کند ولی Review روی Commitهای میانی هم می‌تواند مفید باشد — قرارداد تیم.

اشتباه‌های رایج

  • عنوان «fix» بدون زمینه.
  • PR بی‌توضیح با اتکا به اینکه «diff خودش معلوم است».
  • درخواست Review وقتی هنوز WIP شکسته است بدون Draft.
  • نادیده گرفتن CI قرمز و اصرار به Merge.
  • باز نگه داشتن PR هفته‌ها بدون همگام‌سازی با main.

PR به‌عنوان واحد ارتباطی با غیرمهندس

مدیر محصول یا امنیت ممکن است کد نخواند، ولی عنوان، چک‌لیست ریسک، و لینک Issue در PR برایشان قابل‌پیگیری است. PR خوب ترجمهٔ کار فنی به تصمیم قابل‌فهم است. وضعیت «Blocked on review» یا «Waiting on QA» را در برچسب‌ها شفاف کنید تا صف مبهم نشود.

قالب پیشنهادی بدنهٔ PR

markdown

## خلاصه - چه مشکلی حل می‌شود؟ ## نحوهٔ تست - [ ] واحد - [ ] دستی در staging ## ریسک - مهاجرت؟ کش؟ سازگاری API؟ ## تصاویر / لینک - Issue #123

مخازن می‌توانند این قالب را با Pull request template در GitHub اجباری کنند تا نویسنده زمینه را خالی نگذارد.

بستن حلقه بعد از Merge

  • حذف Branch فرعی در UI یا محلی.
  • تأیید Deploy روی Commit/PR مشخص.
  • بروزرسانی Issue و changelog اگر لازم است.
  • یادداشت برای PRهای داغ که Conflict بعدی نسازند (مثلاً اطلاع به Branchهای موازی).

برچسب‌ها، Milestone و اتصال Issue

برچسب‌هایی مثل bug، security، needs-design صف را قابل فیلتر می‌کنند. بستن خودکار Issue با واژه‌های Fixes #id در بدنهٔ PR ردیابی را کامل می‌کند. بدون این‌ها، PRها به جزایر بدون زمینه تبدیل می‌شوند.

حقوق دسترسی: چه کسی Merge می‌کند؟

مدل رایج: نویسنده Merge نمی‌کند تا حداقل یک Approve بیاید؛ یا نویسنده بعد از Approve می‌تواند Merge کند. انتخاب به فرهنگ تیم بستگی دارد. مهم این است که Bypass عمدی Branch protection نادر و حساب‌شده باشد — وگرنه PR نمایشی می‌شود.

PR و محیط‌های Preview

بسیاری تیم‌ها برای هر PR یک محیط موقت می‌سازند تا QA بدون Merge به main تست کند. این لایه روی مفهوم PR سوار است: واحد پیشنهاد تغییر باید قابل اشاره و Deploy موقت باشد. اگر Preview ندارید، حداقل دستور تست دستی را در بدنه بنویسید.

ضدالگوهای صف PR

  • PRهای وابستهٔ زنجیره‌ای بدون توضیح که Reviewer ترتیب را نفهمد.
  • باز کردن PR فقط برای «جای پارک» کد بدون Draft.
  • Merge شنبه شب بدون حضور نویسنده برای Rollback.
  • PRهایی که نیمه‌کاره CI را قرمز نگه می‌دارند و نویز می‌سازند.

بهداشت صف به اندازهٔ کیفیت یک diff مهم است؛ لید باید صف را مثل بکاپ محصول ببیند.

سوالات متداول

PR همان git pull است؟

خیر. git pull همگام‌سازی محلی با Remote است. Pull Request پیشنهاد ادغام روی هاست با لایهٔ اجتماعی و CI است.

آیا برای پروژهٔ یک‌نفره لازم است؟

اجباری نه؛ ولی برای فعال کردن CI روی هر تغییر و عادت آینده مفید است. بعضی تنها کارها هم از PR استفاده می‌کنند.

Fork و PR

در متن‌باز معمولاً از Fork به مخزن بالادست PR می‌دهید. در تیم داخلی اغلب Branch روی همان مخزن کافی است.

خلاصه

Pull Request سازوکار پیشنهاد ادغام همراه Review، بحث و چک خودکار است. مسئله‌اش کیفیت ورود به main است نه جایگزین Git. PR خوب کوچک، توضیح‌دار و تست‌شده است؛ دکمهٔ Merge فقط پایان فرآیند است.

قدم بعد: خودِ Code Review روی GitHub (۲۰۹) و سیاست‌های Branch protection (۲۲۰).

منابع و مراجع

  • GitHub Docs — About pull requests — https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
  • GitHub Docs — Creating a pull request — https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
  • GitHub Docs — About pull request merges — https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges
  • GitHub Docs — About draft pull requests — https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests
  • GitHub Flow guide — https://docs.github.com/en/get-started/using-github/github-flow

نویسنده

سا

سهیل ابراهیم‌پور بنیان‌گذار FutureForge است. روی طراحی محصول، معماری و استقرار نرم‌افزار سفارشی کار می‌کند.

یادداشت‌های مرتبط

یادداشت‌های مرتبط

دسته‌بندی‌ها

خدمات مرتبط

از یادداشت تا پروژه

اگر موضوع این مقاله به سیستم یا محصول شما نزدیک است، می‌توانیم درباره دامنه واقعی صحبت کنیم.

اگر در انتخاب معماری یا مسیر توسعه مطمئن نیستید، می‌توانید درباره پروژه صحبت کنیم.

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

سهیل ابراهیم‌پور
یادداشت‌ها
Monolith در برابر Microservices: کدام را انتخاب کنیم؟
Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه
Empty State، Error State و Loading State چیست؟
UX مهم‌تر است یا UI؟
چرا متن بد می‌تواند حتی یک UI زیبا را خراب کند؟

معماری نرم‌افزار

Monolith در برابر Microservices: کدام را انتخاب کنیم؟

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه

۲۹ شهریور ۱۴۰۵

مهندسی محصول

Empty State، Error State و Loading State چیست؟

۲۹ شهریور ۱۴۰۵

مهندسی محصول

UX مهم‌تر است یا UI؟

۲۹ شهریور ۱۴۰۵

مهندسی محصول

چرا متن بد می‌تواند حتی یک UI زیبا را خراب کند؟

۲۹ شهریور ۱۴۰۵
همه یادداشت‌ها219
معماری نرم‌افزار13
واژه‌نامه37
عملیات و استقرار87
مهندسی محصول74
راهنمای وب8
طراحی و ساخت محصول
توسعه فول‌استک
ممیزی مهندسی
مشاوره معماری
زیرساخت و استقرار
پروژه‌تان را مطرح کنید
ابزارهای رایگان
پروژه‌تان را مطرح کنید