چرا ساختار پیام کامیت مهم است
هر تغییری که میزنید وارد تاریخچهٔ Git میشود. وقتی پیامها بیقاعده باشند، زمینه از دست میرود، ساخت چنجلاگ دستی میشود، CI/CD نمیتواند منظور را تشخیص دهد و همتیمیها هم سختتر دنبال میکنند. Conventional Commits با یک فرمت سبک و قابلپردازش این مشکل را حل میکند تا تاریخچه هم برای انسان و هم برای ابزارها قابل خواندن باشد.
Conventional Commits چیست؟
Conventional Commits یک مشخصات ساده برای ساختاربندی پیامهای کامیت است. این الگو پیامها را قابل پیشبینی میکند تا بتوانید چنجلاگ، نسخهگذاری معنایی و پایپلاینهای انتشار را خودکار کنید.
ساختار پیام کامیت
<type>(scope): <short description>
[body]
[footer]
اجزا
- type (اجباری): نوع تغییر (
feat،fix،docsو غیره) - scope (اختیاری): بخش تحت تأثیر، مثل
auth،cart،api - description (اجباری): خلاصهٔ کوتاه آنچه تغییر کرده
- body (اختیاری): توضیحات بیشتر، دلیل یا جزئیات پیادهسازی
- footer (اختیاری): رفرنسها و تغییرات شکننده (مثلاً
BREAKING CHANGE:یاCloses #123)
انواع رایج
| Type | Purpose |
|---|---|
| feat | افزودن یک قابلیت جدید |
| fix | رفع باگ |
| docs | تغییرات صرفاً مستندات |
| style | تغییرات فرمت/فاصله/استایل بدون منطق جدید |
| refactor | تغییر ساختار کد بدون افزودن قابلیت یا رفع باگ |
| test | اضافه/بهروزرسانی تستها |
| chore | کارهای متفرقه (ابزارهای build، تنظیمات و مشابه) |
مثالهای واقعی
فرمت را یکدست استفاده کنید تا ابزارها و همتیمیها سریعاً منظور را بفهمند:
- قابلیت جدید
feat(cart): add quantity selector to cart items - رفع باگ
fix(auth): resolve issue with token refresh on expiration - بهروزرسانی مستندات
docs(readme): update usage example for CLI - تغییر استایل
style(ui): reformat buttons and inputs using Tailwind - ریفکتور
refactor(api): simplify data fetch logic in product service - تغییر شکننده
feat!: drop support for Node.js v12
جمعبندی
Conventional Commits تاریخچهٔ Git را ساختیافته، قابل جستوجو و آمادهٔ اتوماسیون نگه میدارد. وقتی کل تیم از این فرمت پیروی کند، انتشارها تمیزتر، چنجلاگها دقیقتر و ریویوها سریعتر میشود.
