تحقق من رسالة commit وفق Conventional Commits وcommitlint، مع الزيادة التي تعنيها في رقم الإصدار
يعمل في متصفحك. لا يُرسل أي شيء تكتبه إلى أي مكان. تم التحقق في 16 أكتوبر 2026.يبدأ الـ conventional commit بنوع ثم نطاق (scope) اختياري ثم وصف، مثل "fix(api): handle empty response". الصق رسالة لتتحقق منها وفق القواعد الـ 12 في config-conventional الخاص بـ commitlint، وترى أجزاءها، وترى الإصدار الذي تعنيه: feat يعني minor، وfix يعني patch، والتغيير غير المتوافق يعني major.
تُرجمت هذه الصفحة آليًا من الأصل الإنجليزي. لم يراجع أي شخص هذه الترجمة بعد، لذا فالنسخة الإنجليزية هي التي يُعتمد عليها. اقرأ الأصل الإنجليزي
الصق رسالة الـ commit، أو اضغط على نوع مثل feat أو fix لتبدأ رسالة.
اقرأ النتيجة: كل قاعدة تخالفها الرسالة بكلمات بسيطة، مع الأجزاء التي قُرئت بها الرسالة.
صحّح الرسالة حتى تجتاز الفحص؛ يوضح سطر الإصدار هل تعني إصدار major أو minor أو patch.
لفحص pull request كامل، انتقل إلى قائمة عناوين والصق مخرجات git log --format=%s.
Conventional Commits صيغة صغيرة لرسائل الـ commit تستطيع الأدوات قراءتها: تختار أدوات الإصدار منها رقم الإصدار التالي، وتحوّلها أدوات سجل التغييرات (changelog) إلى ملاحظات إصدار. تفرضها فرق كثيرة باستخدام commitlint في hook من نوع commit-msg، ورفض رسالة commit إزعاج صغير شائع.
الصيغة. عنوان، ثم متن وتذييلات اختيارية، يفصل بين كل منها سطر فارغ:
| الجزء | مثال | القاعدة |
|---|---|---|
| النوع | feat، fix، docs |
واحد من 11، بأحرف صغيرة |
| النطاق | (api) |
اختياري، بين قوسين |
| تغيير غير متوافق | ! قبل النقطتين |
أو تذييل BREAKING CHANGE |
| الوصف | add login page |
الحرف الأول صغير، بلا نقطة في النهاية |
| طول العنوان | 100 حرف على الأكثر | |
| التذييل | Closes #123 |
بعد سطر فارغ |
ما يتم فحصه. القواعد الاثنتا عشرة في @commitlint/config-conventional: عشرة أخطاء (نوع فارغ، حالة أحرف النوع، قائمة الأنواع، وصف فارغ، حالة أحرف الوصف، النقطة في النهاية، طول العنوان، المسافات في العنوان، طول أسطر المتن والتذييل) وتحذيران (سطر فارغ قبل المتن وقبل التذييل). يُشرح كل إخفاق بكلمات بسيطة مع طريقة إصلاحه.
زيادة الإصدار. تربط المواصفة الـ commits بالإصدار الدلالي (Semantic Versioning): يعني fix إصدار patch، وfeat إصدار minor، وأي تغيير غير متوافق، معلَّم بـ ! أو بتذييل BREAKING CHANGE، إصدار major. الأنواع الأخرى مثل docs أو chore لا تغيّر الإصدار وحدها.
pull request كامل. انتقل إلى وضع القائمة والصق مخرجات git log --format=%s main..HEAD، عنواناً واحداً في كل سطر. يجتاز كل عنوان الفحص أو يفشل فيه، ويُذكر الإصدار الناتج عنها مجتمعة.
رُوجعت النتائج مقابل @commitlint/lint 19 مع config-conventional على أكثر من 100 رسالة. كل شيء يعمل في متصفحك؛ ولا يُرسل أي شيء تكتبه إلى أي مكان.
رسالة commit يتكون سطرها الأول من نوع، ثم نطاق اختياري بين قوسين، ثم نقطتين، ثم مسافة، ثم وصف قصير، مثل fix(api): handle empty response. تأتي الصيغة من مواصفة Conventional Commits 1.0.0، وتستخدمها الأدوات لاختيار رقم الإصدار التالي وكتابة سجلات التغييرات تلقائياً.
استخدم feat لتغيير يراه المستخدمون قدرة جديدة، وfix لإصلاح خطأ، وchore لأعمال الصيانة التي لا تغيّر أياً منهما، مثل تحديث الاعتماديات. وتتبعها الإصدارات: feat يُنتج إصدار minor، وfix إصدار patch، وchore لا يُنتج إصداراً وحده. أما docs وstyle وrefactor وperf وtest وbuild وci فهي الأنواع القياسية الأخرى.
ضع علامة تعجب قبل النقطتين، كما في feat(api)!: remove the v1 endpoints، أو أضف بعد سطر فارغ تذييلاً يبدأ بـ BREAKING CHANGE: ويذكر ما الذي يتعطل. أيٌّ منهما يجعل الإصدار major مهما كان النوع. واستخدامهما معاً مسموح وشائع.
عادةً لأن العنوان لا يطابق type: description تماماً، فلا يجد commitlint نوعاً ولا وصفاً. من الأسباب الشائعة غياب المسافة بعد النقطتين، أو وجود مسافة قبلهما، أو نوع بحرف كبير أو غير معروف، أو عدم وجود نوع أصلاً. الصق الرسالة هنا لترى أي جزء قُرئ خطأً.
ليس مع config-conventional: فقاعدته subject-case ترفض الأوصاف المكتوبة بـ sentence case أو start case أو pascal case أو upper case، لذا يفشل Add login وينجح add login. يُتجاهل النص الموضوع بين علامات backtick أو علامات الاقتباس في هذه القاعدة، لذا لا مشكلة في اسم مثل `Button` في البداية. الفرق التي تريد الأحرف الكبيرة تغيّر القاعدة في إعداداتها الخاصة.
لا. افتراضياً يتخطى commitlint الـ merge commits، وعمليات revert التي يكتبها git، وcommits من نوع fixup! وsquash!، والعناوين التي ليست سوى رقم إصدار مثل 1.2.3 أو chore(release): 1.2.3. تتخطى هذه الصفحة الرسائل نفسها وتذكر ذلك، فيعطي الفحص هنا الإجابة نفسها التي يعطيها الـ hook.
تتغير المعدلات والقواعد؛ راجع المصدر قبل الاعتماد على أي رقم.
هل ما زلت عالقًا؟ اسأل عن مدقق Conventional Commits ويمكن لأي شخص يعرف الإجابة أن يجيب. لا حاجة إلى حساب.