لماذا استراتيجية تفرّع؟
بدون استراتيجية، يتحول المستودع إلى فوضى: أفرع مهملة، تعارضات دائمة، نشر خاطئ. الاستراتيجية تنظّم:
- متى تنشئ فرعًا؟
- متى تدمج؟
- كيف تنشر؟
Git Flow — الأقدم والأكثر تنظيمًا
main ────●────────●────────●── (نشر مستقر)
\ / /
develop ───●────●────●────●── (تكامل)
\ / \ /
feature ─────● ●──── (ميزات جديدة)
\
release ─────────────────●── (تحضير إصدار)
/
hotfix ────────────────● (إصلاح عاجل من main)
| الفرع | الغرض |
|---|---|
main | إصدارات مستقرة |
develop | تكامل الميزات |
feature/* | تطوير ميزة جديدة |
release/* | تحضير إصدار جديد |
hotfix/* | إصلاح عاجل من main |
# البدء بميزة جديدة
git checkout develop
git checkout -b feature/user-auth
# بعد الانتهاء
git checkout develop
git merge --no-ff feature/user-auth
git branch -d feature/user-auth
متى تستخدم؟ مشاريع كبيرة مع إصدارات دورية (موبايل، مكتبات).
GitHub Flow — الأبسط
main ─────●────────●──────●
\ / /
feature ───●────●──────●
mainدائمًا جاهز للنشر.- أنشئ فرعًا من
mainلأي تغيير. - ادفع الفرع وافتح Pull Request.
- بعد المراجعة، ادمج إلى
mainوانشر فورًا.
git checkout main
git pull
git checkout -b fix-navbar
# ... تعديلات ...
git push -u origin fix-navbar
# افتح PR → راجع → ادمج → احذف الفرع
متى تستخدم؟ مشاريع SaaS، ويب بنشر مستمر (CI/CD).
Trunk-Based Development — الأسرع
main ──●──●──●──●──●──●──●── (نشر مباشر)
\ / \ /
short ──●──● ●──● (أقل من يوم)
- كل المطورين يدفعون إلى
mainعدة مرات يوميًا. - الأفرع قصيرة جدًا (ساعات، لا أيام).
- Feature Flags تفعّل/تعطّل الميزات دون نشر.
متى تستخدم؟ فرق صغيرة، نشر آلي قوي، اختبارات شاملة.
المقارنة
| المعيار | Git Flow | GitHub Flow | Trunk-Based |
|---|---|---|---|
| التعقيد | عالي | متوسط | منخفض |
| عدد الأفرع | 5+ أنواع | نوع واحد | نوع واحد |
| تكرار النشر | شهري/أسبوعي | يومي | عدة مرات يوميًا |
| إصلاح عاجل | hotfix من main | PR مباشر | commit مباشر |
| يحتاج CI/CD | مفيد | ضروري | أساسي |
| Feature Flags | لا | لا | نعم |
التوصية
| حالة مشروعك | الاستراتيجية |
|---|---|
| فريق كبير (10+)، إصدارات دورية | Git Flow |
| فريق صغير، نشر مستمر | GitHub Flow |
| فريق صغير، CI/CD قوي | Trunk-Based |
| مشروعك الشخصي | GitHub Flow — الأبسط والأسهل |
نصائح
- اختر استراتيجية واحدة والتزم بها.
- وثّق الاستراتيجية في
CONTRIBUTING.md. - استخدم
--no-ffللدمج للحفاظ على تاريخ واضح. - احذف الأفرع بعد دمجها.
- لا تدمج أبدًا فرعًا لم يُراجَع (Pull Request).
⚠️ الاستراتيجية ليست دينًا — طوّعها لتناسب فريقك. المهم هو الاتساق، ليس الكمال.
🎯 اختبر نفسك في اختبار Git أو انتقل إلى مسار Docker.