Git & GitHub
Git Workflow احترافي — دليل شامل 2026
📅 2026-11-29⏱ 7 دقائق قراءة
في المقال السابق، تعلمت حل التعارضات. الآن سنتعلم **Git Workflow** — وهو **نظام العمل** الذي يستخدمه الفريق المحترف.
في هذا الدليل العملي، سنأخذك خطوة بخطوة لفهم Workflows المختلفة، مع تمارين وحلول.
## ما هو Git Workflow؟
**Git Workflow** هو **طريقة منظمة** لاستخدام Git في فريق.
**يشمل:**
- كيف تُنشئ الفروع.
- كيف تدمجها.
- من يوافق على الدمج.
- كيف تُنشر الإصدارات.
**الهدف:** تقليل الفوضى، وزيادة الإنتاجية.
## أشهر Workflows
<table>
<thead>
<tr>
<th>Workflow</th>
<th>الوصف</th>
<th>الاستخدام</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Git Flow</strong></td>
<td>فروع متعددة</td>
<td>الإصدارات الكبيرة</td>
</tr>
<tr>
<td><strong>GitHub Flow</strong></td>
<td>فرع main + feature</td>
<td>النشر المستمر</td>
</tr>
<tr>
<td><strong>Trunk-based</strong></td>
<td>فرع رئيسي واحد</td>
<td>الفرق السريعة</td>
</tr>
<tr>
<td><strong>GitLab Flow</strong></td>
<td>بيئات متعددة</td>
<td>DevOps</td>
</tr>
</tbody>
</table>
## 1. Git Flow
**الأكثر تقليدية** — مناسب للمشاريع الكبيرة.
### الفروع:
<table>
<thead>
<tr>
<th>الفرع</th>
<th>الوصف</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>main</strong></td>
<td>الإصدارات المستقرة</td>
</tr>
<tr>
<td><strong>develop</strong></td>
<td>التطوير الرئيسي</td>
</tr>
<tr>
<td><strong>feature/*</strong></td>
<td>ميزات جديدة</td>
</tr>
<tr>
<td><strong>release/*</strong></td>
<td>تحضير الإصدار</td>
</tr>
<tr>
<td><strong>hotfix/*</strong></td>
<td>إصلاحات عاجلة</td>
</tr>
</tbody>
</table>
### الرسم البياني:
```
main ───●───────────────●────────●───
\ / \
release \ ● ●
\ / \
develop ────●───●───●───●────────────────●───
/ / /
feature ●───●───●
```
### مثال عملي:
```bash
# 1. إعداد الفروع
git checkout -b develop main
# 2. ميزة جديدة
git checkout -b feature/login develop
# ... عمل
git checkout develop
git merge feature/login
git branch -d feature/login
# 3. تحضير إصدار
git checkout -b release/1.0.0 develop
# ... اختبار
git checkout main
git merge release/1.0.0
git tag -a v1.0.0 -m "الإصدار 1.0.0"
git checkout develop
git merge release/1.0.0
# 4. إصلاح عاجل
git checkout -b hotfix/1.0.1 main
# ... إصلاح
git checkout main
git merge hotfix/1.0.1
git tag -a v1.0.1 -m "الإصدار 1.0.1"
git checkout develop
git merge hotfix/1.0.1
```
**المميزات:**
- ✅ منظم جداً.
- ✅ مناسب للإصدارات.
- ✅ فصل التطوير عن الإنتاج.
**العيوب:**
- ❌ معقد.
- ❌ بطيء.
- ❌ غير مناسب للنشر المستمر.
## 2. GitHub Flow
**الأبسط** — مناسب للنشر المستمر.
### القواعد:
1. **`main` دائماً مستقر.**
2. **فرع جديد لكل ميزة.**
3. **Pull Request للمراجعة.**
4. **نشر بعد الدمج.**
### الرسم:
```
main ───●───────●────────────●───────●───
\ / \ /
feature ●───● ●───●
```
### مثال عملي:
```bash
# 1. ابدأ من main
git checkout main
git pull
# 2. أنشئ فرعاً
git checkout -b feature/new-feature
# 3. اعمل
git add .
git commit -m "feat: ميزة جديدة"
git push -u origin feature/new-feature
# 4. افتح PR
# ... مراجعة
# 5. ادمج على GitHub
# 6. ارجع محلياً
git checkout main
git pull
git branch -d feature/new-feature
```
**المميزات:**
- ✅ بسيط.
- ✅ سريع.
- ✅ مناسب للنشر المستمر.
**العيوب:**
- ❌ لا يفصل بين الإصدارات.
- ❌ لا يدعم hotfixes بسهولة.
## 3. Trunk-based Development
**الأسرع** — مناسب للفرق الخبيرة.
### القواعد:
1. **فرع واحد: `main`.**
2. **دمج يومي.**
3. **فروع قصيرة (< يوم).**
4. **Feature flags.**
### الرسم:
```
main ───●───●───●───●───●───●───●───
\ / \ / \ /
feature ●─● ●─● ●─●
```
### مثال عملي:
```bash
# كل يوم
git checkout main
git pull
git checkout -b feat/tiny-change
# ... عمل صغير
git commit -m "feat: تغيير صغير"
git push
# PR سريع
# دمج
```
**المميزات:**
- ✅ سريع جداً.
- ✅ تعارضات أقل.
- ✅ نشر مستمر.
**العيوب:**
- ❌ يحتاج فريق خبير.
- ❌ يحتاج اختبارات قوية.
- ❌ يحتاج feature flags.
## مقارنة
<table>
<thead>
<tr>
<th>المعيار</th>
<th>Git Flow</th>
<th>GitHub Flow</th>
<th>Trunk</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>التعقيد</strong></td>
<td>🔴 عالي</td>
<td>🟢 منخفض</td>
<td>🟢 منخفض</td>
</tr>
<tr>
<td><strong>السرعة</strong></td>
<td>🐢 بطيء</td>
<td>🚀 سريع</td>
<td>⚡ أسرع</td>
</tr>
<tr>
<td><strong>الفروع</strong></td>
<td>5 أنواع</td>
<td>main + feature</td>
<td>main فقط</td>
</tr>
<tr>
<td><strong>المناسب لـ</strong></td>
<td>الإصدارات</td>
<td>النشر المستمر</td>
<td>الفرق السريعة</td>
</tr>
<tr>
<td><strong>الأخطاء</strong></td>
<td>قليل</td>
<td>متوسط</td>
<td>أكثر</td>
</tr>
</tbody>
</table>
**التوصية:**
- **مبتدئ:** GitHub Flow.
- **فريق متوسط:** GitHub Flow.
- **فريق كبير:** Git Flow.
- **فريق خبير:** Trunk-based.
## أفضل الممارسات
### 1. أسماء الفروع
```
✅ feature/user-login
✅ fix/header-bug
✅ hotfix/security-patch
✅ release/1.0.0
❌ my-branch
❌ test123
❌ work
```
### 2. رسائل Commits
```
✅ feat: إضافة تسجيل الدخول
✅ fix: إصلاح خطأ في النموذج
✅ docs: تحديث README
❌ تحديث
❌ fix
❌ asdf
```
### 3. حجم PR
- ✅ **أقل من 400 سطر**.
- ✅ **ميزة واحدة**.
- ✅ **commit واحد** إذا أمكن.
### 4. المراجعة
- **مراجعة واحدة على الأقل**.
- **رد خلال 24 ساعة**.
- **تعليقات بناءة**.
### 5. الاختبار
```bash
# قبل PR
npm test
npm run lint
npm run build
```
### 6. CI/CD
**GitHub Actions:**
```yaml
name: CI
on:
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm install
- run: npm test
- run: npm run build
```
**النتيجة:** اختبار تلقائي لكل PR.
### 7. حماية الفرع
**على GitHub:**
`Settings → Branches → Add rule`
- ✅ **Require pull request**.
- ✅ **Require approvals**.
- ✅ **Require status checks**.
- ✅ **Require conversation resolution**.
**النتيجة:** لا يمكن دفع main مباشرة.
## مثال عملي: فريق صغير
### السيناريو: 3 مطورين
**القواعد:**
- GitHub Flow.
- PR مع مراجعة.
- اختبارات CI.
- حماية main.
**دورة العمل اليومية:**
```bash
# 1. ابدأ يومك
git checkout main
git pull
# 2. اعمل على ميزة
git checkout -b feature/new-page
# ... عمل
git add .
git commit -m "feat: صفحة جديدة"
# 3. ارفع
git push -u origin feature/new-page
# 4. افتح PR
# ... مراجعة
# 5. بعد الموافقة
# ادمج على GitHub
# 6. ابدأ ميزة جديدة
git checkout main
git pull
git checkout -b feature/another
```
## تمارين عملية
### تمرين 1: GitHub Flow
اعمل بـ GitHub Flow.
**الحل:** (راجع المثال أعلاه)
### تمرين 2: Git Flow
اعمل بـ Git Flow.
**الحل:**
```bash
git checkout -b develop main
git checkout -b feature/x develop
# ... عمل
git checkout develop
git merge feature/x
```
### تمرين 3: حماية الفرع
احمِ `main`.
**الحل:**
- Settings → Branches.
- Add rule → main.
- Require PR + approvals.
### تمرين 4: CI
أضف GitHub Actions.
**الحل:** (راجع `.github/workflows/ci.yml`)
### تمرين 5: أسماء الفروع
اكتب 5 أسماء احترافية.
**الحل:**
```
feature/user-auth
fix/cart-total
docs/api-guide
refactor/utils
hotfix/security
```
### تمرين 6: رسائل Commits
اكتب 5 commits احترافية.
**الحل:**
```
feat: إضافة شريط البحث
fix: إصلاح خطأ في التحميل
docs: تحديث README
refactor: تقسيم الملفات
test: إضافة اختبارات
```
### تمرين 7: PR Template
أنشئ قالب PR.
**الحل:** `.github/pull_request_template.md`
### تمرين 8: مشروع كامل
طبّق Workflow كامل.
**الحل:** (راجع المثال أعلاه)
## حل المشاكل الشائعة
### 🔴 المشكلة 1: الفريق لا يتبع Workflow
**الحل:**
- وثّق Workflow في `CONTRIBUTING.md`.
- استخدم حماية الفرع.
- درّب الفريق.
### 🔴 المشكلة 2: PRs كثيرة ومعلقة
**الحل:**
- حدد حداً أقصى للـ PRs.
- راجع يومياً.
- أغلق القديمة.
### 🔴 المشكلة 3: اختبارات تفشل
**الحل:**
- شغّل الاختبارات محلياً قبل PR.
- أضف CI.
### 🔴 المشكلة 4: تعارضات كثيرة
**الحل:**
- فروع قصيرة.
- حدّث من main يومياً.
- PRs صغيرة.
### 🔴 المشكلة 5: main غير مستقر
**الحل:**
- حماية الفرع.
- اختبارات إلزامية.
- مراجعة قبل الدمج.
## جدول مكونات Workflow
<table>
<thead>
<tr>
<th>المكوّن</th>
<th>الوصف</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Branching</strong></td>
<td>استراتيجية الفروع</td>
</tr>
<tr>
<td><strong>Commits</strong></td>
<td>رسائل احترافية</td>
</tr>
<tr>
<td><strong>Pull Requests</strong></td>
<td>مراجعة الكود</td>
</tr>
<tr>
<td><strong>Review</strong></td>
<td>موافقة قبل الدمج</td>
</tr>
<tr>
<td><strong>CI/CD</strong></td>
<td>اختبار ونشر تلقائي</td>
</tr>
<tr>
<td><strong>Protection</strong></td>
<td>حماية الفروع</td>
</tr>
<tr>
<td><strong>Releases</strong></td>
<td>إصدارات منظمة</td>
</tr>
</tbody>
</table>
## قائمة تحقق نهائية
<table>
<thead>
<tr>
<th>المهمة</th>
<th>الحالة</th>
</tr>
</thead>
<tbody>
<tr>
<td>فهم Git Flow</td>
<td>⬜</td>
</tr>
<tr>
<td>فهم GitHub Flow</td>
<td>⬜</td>
</tr>
<tr>
<td>فهم Trunk-based</td>
<td>⬜</td>
</tr>
<tr>
<td>اختيار Workflow مناسب</td>
<td>⬜</td>
</tr>
<tr>
<td>إعداد CI/CD</td>
<td>⬜</td>
</tr>
<tr>
<td>حماية الفرع</td>
<td>⬜</td>
</tr>
<tr>
<td>حل التمارين الثمانية</td>
<td>⬜</td>
</tr>
</tbody>
</table>
## ماذا بعد هذا المقال؟
الآن بعد أن أتقنت Workflow، أنت جاهز للمقال الأخير:
1. **مشروع تعاوني** — تطبيق كامل.
## الخلاصة
في هذا المقال، تعلمت:
- ✅ ما هو Git Workflow.
- ✅ Git Flow (التقليدي).
- ✅ GitHub Flow (البسيط).
- ✅ Trunk-based (السريع).
- ✅ أفضل الممارسات.
- ✅ CI/CD.
- ✅ حماية الفروع.
- ✅ حل 8 تمارين عملية.
**تذكر:** Workflow جيد = فريق منتج = مشروع ناجح.