الدرس 3: Git الجماعي — Semantic Commits وطلبات الدمج (PRs) وحماية الفرع
سِجِلّ Git مثل: `fix`، `fix2`، `final`، `final-final` — هذا ليس Git. إنّ Git أداة توثّق سِجِلّ قراراتك. عندما يكون السِجِلّ قابلاً للقراءة، يصبح debugging وonboarding وrollbacks دقيقتين بدلاً من ساعتين.
الـ semantic commit مثل اسم ملف جيّد — `project-v2-FINAL-use-this-one.docx` لا يفيد أحداً. `feat(auth): add login with Google` — الجميع يعرف ما هو.
- semantic commit
- صيغة commit تصف نوع التغيير (feat/fix/docs...) ونطاق التأثير (auth/db/ui...) قبل الوصف.
- branch protection
- إعدادات GitHub تمنع الـ push المباشر إلى `main` — تشترط PR ومراجعة وCI أخضر قبل الـ merge.
- trunk-based development
- استراتيجية branching تكون فيها feature branches قصيرة العمر (أقل من يوم) وتُدمَج في `main` بتواتر — ما يقلّل merge conflicts.