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

## Checklist
- [x] الكود يعمل
- [x] تم اختباره
- [x] التوثيق محدث
- [x] لا توجد أخطاء
4. اختر Reviewers
- Reviewers: الفريق المراجع.
- Assignees: أنت (المسؤول).
- Labels:
enhancement. - Projects: اللوحة.
5. اضغط Create pull request
🎉 PR مفتوح!
الخطوة 5: المراجعة
كمراجع:
- Files changed: عرض التغييرات.
- إضافة تعليقات: اضغط على السطر.
- اختر:
- Comment: تعليق عام.
- Approve: موافقة.
- Request changes: طلب تعديلات.
الملاحظات الشائعة:
💡 اقتراح: يمكن استخدام map بدلاً من forEach هنا.
🐛 خطأ: هذا السطر قد يسبب crash إذا كان input فارغاً.
❓ سؤال: لماذا اخترت هذا النهج؟
✅ جيد: تنسيق ممتاز!
الخطوة 6: التعديل
بعد الملاحظات:
# عدّل الكود
# ...
git add .
git commit -m "fix: الاستجابة للملاحظات"
git push
النتيجة: PR يتحدّث تلقائياً.
الخطوة 7: الدمج
على GitHub:
- Merge pull request.
- اختر:
- Create a merge commit: commit يوضح الدمج.
- Squash and merge: commit واحد.
- Rebase and merge: سجل خطي.
- اضغط Confirm merge.
الخطوة 8: حذف الفرع
على GitHub:
اضغط Delete branch.
محلياً:
git checkout main
git pull
git branch -d feature/add-search
أنواع الدمج
| النوع | الوصف | الاستخدام |
|---|---|---|
| Merge commit | commit إضافي | الافتراضي |
| Squash and merge | commit واحد | سجل نظيف |
| 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، أنت جاهز للمقال التالي:
- حل التعارضات — Conflict Resolution.
- Workflow احترافي — Git Flow.
- مشروع تعاوني.
الخلاصة
في هذا المقال، تعلمت:
- ✅ ما هو Pull Request.
- ✅ دورة حياة PR.
- ✅ إنشاء PR.
- ✅ المراجعة.
- ✅ الدمج (3 أنواع).
- ✅ أفضل الممارسات.
- ✅ حل 8 تمارين عملية.
تذكر: PR هو مكان النقاش والمراجعة — استخدمه بحكمة.
📚 مقالات ذات صلة
مشروع Git متكامل — تعاون على مستودع احترافي 2026
مشروع عملي شامل للتعاون على مستودع Git — فروع، PRs، مراجعة، CI/CD، وإصدارات
Git Workflow احترافي — دليل شامل 2026
دليل عملي مفصل لـ Git Workflow الاحترافي — Git Flow، GitHub Flow، Trunk-based، وأفضل الممارسات
حل التعارضات في Git — دليل شامل 2026
دليل عملي مفصل لحل التعارضات في Git — أنواع التعارضات، الأخطاء الشائعة، وأدوات المساعدة