Git & GitHub📅 2026-11-27⏱ 8 دقائق قراءة🔧 مقال 7 من 10

Pull Requests في Git — دليل شامل 2026

دليل عملي مفصل لـ Pull Requests — إنشاء، مراجعة، دمج، وأفضل الممارسات

في المقال السابق، تعلمت أساسيات GitHub. الآن سنتعلم Pull Requests — وهي قلب العمل الجماعي في GitHub.

في هذا الدليل العملي، سنأخذك خطوة بخطوة لفهم Pull Requests، مع تمارين وحلول.

ما هو Pull Request؟

Pull Request (PR) هو طلب لدمج فرع في فرع آخر.

تشبيه بسيط: تخيل أنك تعمل في شركة:

  • تكتب مسودة تقرير (فرع).
  • ترسلها للمدير (PR).
  • المدير يراجعها ويقترح تعديلات (Review).
  • يوافق عليها (Approve).
  • تُنشر رسمياً (Merge).

PR يوفر:

  • مراجعة الكود من الفريق.
  • مناقشة التغييرات.
  • اختبارات تلقائية.
  • تاريخ للقرارات.

متى تستخدم Pull Request؟

  • ✅ مشاريع جماعية: دائماً.
  • ✅ مشاريع مفتوحة: للمساهمة.
  • ✅ مشاريع فردية: للميزات الكبيرة (للمراجعة الذاتية).
  • ❌ إصلاحات سريعة: يمكن الدفع المباشر (نادراً).

دورة حياة PR

المرحلةالوصف
1. إنشاء فرعفرع جديد للميزة
2. العملكتابة الكود + commits
3. رفعرفع الفرع لـ GitHub
4. فتح PRإنشاء Pull Request
5. المراجعةالفريق يراجع الكود
6. التعديلالاستجابة للملاحظات
7. الموافقةApprove
8. الدمجMerge
9. الحذفحذف الفرع

الخطوة 1: إنشاء فرع

git checkout main
git pull
git checkout -b feature/add-search

قواعد التسمية:

  • feature/ — ميزة جديدة.
  • fix/ — إصلاح خطأ.
  • docs/ — توثيق.
  • refactor/ — إعادة هيكلة.

الخطوة 2: العمل على الميزة

# أضف الملفات
echo "search" > search.js
git add .
git commit -m "feat: إضافة ميزة البحث"

# عدّل
echo "styles" >> search.js
git add .
git commit -m "style: تنسيق البحث"

الخطوة 3: رفع الفرع

git push -u origin feature/add-search

النتيجة:

Enumerating objects: 5, done.
...
To https://github.com/USERNAME/REPO.git
 * [new branch]      feature/add-search -> feature/add-search

الخطوة 4: فتح PR على GitHub

1. اذهب إلى المستودع

github.com/USERNAME/REPO

2. اضغط Compare & pull request

النتيجة: GitHub يعرض زراً أصفر.

3. املأ المعلومات

العنوان:

feat: إضافة ميزة البحث

الوصف:

## ما هذا PR؟
إضافة ميزة البحث للمقالات.

## ما الذي تغيّر؟
- إضافة شريط البحث
- إضافة دالة البحث
- إضافة تنسيقات

## كيف أختبر؟
1. افتح الصفحة الرئيسية
2. اكتب في شريط البحث
3. النتائج تظهر فوراً

## Screenshots
![screenshot](url)

## Checklist
- [x] الكود يعمل
- [x] تم اختباره
- [x] التوثيق محدث
- [x] لا توجد أخطاء

4. اختر Reviewers

  • Reviewers: الفريق المراجع.
  • Assignees: أنت (المسؤول).
  • Labels: enhancement.
  • Projects: اللوحة.

5. اضغط Create pull request

🎉 PR مفتوح!

الخطوة 5: المراجعة

كمراجع:

  1. Files changed: عرض التغييرات.
  2. إضافة تعليقات: اضغط على السطر.
  3. اختر:
    • Comment: تعليق عام.
    • Approve: موافقة.
    • Request changes: طلب تعديلات.

الملاحظات الشائعة:

💡 اقتراح: يمكن استخدام map بدلاً من forEach هنا.

🐛 خطأ: هذا السطر قد يسبب crash إذا كان input فارغاً.

❓ سؤال: لماذا اخترت هذا النهج؟

✅ جيد: تنسيق ممتاز!

الخطوة 6: التعديل

بعد الملاحظات:

# عدّل الكود
# ...

git add .
git commit -m "fix: الاستجابة للملاحظات"
git push

النتيجة: PR يتحدّث تلقائياً.

الخطوة 7: الدمج

على GitHub:

  1. Merge pull request.
  2. اختر:
    • Create a merge commit: commit يوضح الدمج.
    • Squash and merge: commit واحد.
    • Rebase and merge: سجل خطي.
  3. اضغط Confirm merge.

الخطوة 8: حذف الفرع

على GitHub:

اضغط Delete branch.

محلياً:

git checkout main
git pull
git branch -d feature/add-search

أنواع الدمج

النوعالوصفالاستخدام
Merge commitcommit إضافيالافتراضي
Squash and mergecommit واحدسجل نظيف
Rebase and mergeسجل خطياحترافي

مثال عملي كامل

السيناريو: إضافة ميزة "Dark Mode"

الخطوة 1: ابدأ من main

git checkout main
git pull

الخطوة 2: أنشئ فرعاً

git checkout -b feature/dark-mode

الخطوة 3: اعمل

# أنشئ ملف
echo "// dark mode" > dark-mode.js
git add .
git commit -m "feat: إضافة Dark Mode"

# عدّل
echo "// styles" >> dark-mode.js
git add .
git commit -m "style: تنسيق Dark Mode"

الخطوة 4: ارفع

git push -u origin feature/dark-mode

الخطوة 5: افتح PR على GitHub

  • املأ المعلومات.
  • أضف Screenshots.
  • اختر Reviewer.
  • Create pull request.

الخطوة 6: بعد المراجعة

# إذا طُلب تعديل
echo "// fix" >> dark-mode.js
git add .
git commit -m "fix: تحسين الأداء"
git push

الخطوة 7: الدمج على GitHub

  • Merge pull request.
  • Delete branch.

الخطوة 8: محلياً

git checkout main
git pull
git branch -d feature/dark-mode

🎉 مبروك!

PR Template

أنشئ .github/pull_request_template.md:

## الوصف
<!-- وصف مختصر للتغييرات -->

## نوع التغيير
- [ ] إصلاح خطأ
- [ ] ميزة جديدة
- [ ] تغيير كاسر
- [ ] توثيق

## Checklist
- [ ] الكود يعمل محلياً
- [ ] تم اختباره
- [ ] لا توجد تحذيرات
- [ ] التوثيق محدّث
- [ ] تم تحديث CHANGELOG

## Screenshots
<!-- إذا كان تغيير بصري -->

## Related Issues
Closes #123

النتيجة: كل PR جديد يستخدم هذا القالب.

أفضل الممارسات

1. PR صغير

  • ✅ أقل من 400 سطر.
  • ✅ ميزة واحدة فقط.
  • ✅ commit واحد إذا أمكن.

2. وصف واضح

  • ✅ ماذا و لماذا.
  • ✅ كيف تختبر.
  • ✅ Screenshots إذا بصري.

3. عنوان جيد

✅ feat: إضافة تسجيل الدخول
✅ fix: إصلاح خطأ في Header
✅ docs: تحديث README

❌ تحديثات
❌ fix bug
❌ asdf

4. راجع بنفسك أولاً

  • اقرأ PR قبل رفعه.
  • تحقق من Files changed.

5. استجب بسرعة

  • الرد على المراجعين خلال 24 ساعة.
  • لا تترك PR معلقاً.

6. اربط Issues

في الوصف:

Closes #123
Fixes #456
Related to #789

الفائدة: عند الدمج، تُغلق Issue تلقائياً.

أنواع المراجعات

النوعالمعنى
Commentتعليق عام
Approveموافقة
Request changesطلب تعديلات

تمارين عملية

تمرين 1: فرع و PR

أنشئ فرعاً، اعمل، وافتح PR.

الحل:

git checkout -b feature/test
echo "test" > test.txt
git add . && git commit -m "feat: test"
git push -u origin feature/test
# افتح PR على GitHub

تمرين 2: وصف PR

اكتب وصفاً احترافياً.

الحل: (راجع القالب أعلاه)

تمرين 3: مراجعة

راجع PR.

الحل:

  • Files changed.
  • اضغط على سطر.
  • أضف تعليق.
  • Comment / Approve.

تمرين 4: الاستجابة

عدّل PR بناءً على الملاحظات.

الحل:

# عدّل
git add .
git commit -m "fix: استجابة"
git push

تمرين 5: Squash

ادمج بـ Squash.

الحل:

  • على GitHub → Squash and merge.

تمرين 6: Rebase

ادمج بـ Rebase.

الحل:

  • على GitHub → Rebase and merge.

تمرين 7: حذف الفرع

احذف الفرع بعد الدمج.

الحل:

git checkout main
git pull
git branch -d feature/test

تمرين 8: مشروع كامل

أنشئ PR كامل مع كل الميزات.

الحل: (راجع المثال أعلاه)

حل المشاكل الشائعة

🔴 المشكلة 1: This branch has conflicts

الحل:

git checkout main
git pull
git checkout feature/branch
git merge main
# حل التعارضات
git add .
git commit -m "merge: حل التعارضات"
git push

🔴 المشكلة 2: PR لا يظهر

السبب: لم ترفع الفرع.

الحل:

git push -u origin feature/branch

🔴 المشكلة 3: Required status checks

السبب: اختبارات تلقائية فاشلة.

الحل: أصلح الكود حتى تنجح الاختبارات.

🔴 المشكلة 4: Merge blocked

السبب: مراجعة مطلوبة.

الحل: انتظر المراجعة أو اعمل على ملاحظات.

🔴 المشكلة 5: PR قديم

الحل:

git checkout main
git pull
git checkout feature/branch
git rebase main
git push --force

جدول أوامر PR

الأمر/الإجراءالوظيفة
git checkout -b feature/xإنشاء فرع
git push -u origin feature/xرفع الفرع
Compare & pull requestفتح PR
Files changedعرض التغييرات
Review changesإرسال مراجعة
Merge pull requestدمج
Delete branchحذف الفرع

قائمة تحقق نهائية

المهمةالحالة
فهم Pull Requests⬜
إنشاء فرع⬜
رفع الفرع⬜
فتح PR⬜
المراجعة⬜
الدمج⬜
حل التمارين الثمانية⬜

ماذا بعد هذا المقال؟

الآن بعد أن أتقنت Pull Requests، أنت جاهز للمقال التالي:

  1. حل التعارضات — Conflict Resolution.
  2. Workflow احترافي — Git Flow.
  3. مشروع تعاوني.

الخلاصة

في هذا المقال، تعلمت:

  • ✅ ما هو Pull Request.
  • ✅ دورة حياة PR.
  • ✅ إنشاء PR.
  • ✅ المراجعة.
  • ✅ الدمج (3 أنواع).
  • ✅ أفضل الممارسات.
  • ✅ حل 8 تمارين عملية.

تذكر: PR هو مكان النقاش والمراجعة — استخدمه بحكمة.

📚 مقالات ذات صلة

Git & GitHub

مشروع Git متكامل — تعاون على مستودع احترافي 2026

مشروع عملي شامل للتعاون على مستودع Git — فروع، PRs، مراجعة، CI/CD، وإصدارات

Git & GitHub

Git Workflow احترافي — دليل شامل 2026

دليل عملي مفصل لـ Git Workflow الاحترافي — Git Flow، GitHub Flow، Trunk-based، وأفضل الممارسات

Git & GitHub

حل التعارضات في Git — دليل شامل 2026

دليل عملي مفصل لحل التعارضات في Git — أنواع التعارضات، الأخطاء الشائعة، وأدوات المساعدة