چطور Commit Message های بهتری بنویسیم
1. یک Commit Message دقیقا چیه؟
یک commit message بخشی از متنیه که کارایی که کردی رو توصیف میکنه و توسط برنامه نویسی که کامیت رو میزنه تو commit object اضافه میشه.
2. چرا باید Commit Message هامون رو خوب و با دقت بنویسیم؟
چند تا از کاربرد های commit message ها:
- خواننده های که در آینده commit ها رو review میکنند، دیگه مشکلی تو درک اینکه چیا تغییر کرده و چرا تغییر کرده ندارن.
- تسهیل undo کردن برخی تغییرات
- ایجاد تغییرات تو release note ها
هر کدوم از این کاربرد ها نیاز به سبک ثابت commit message ها داره.
3. Commit options
- -m (برای اضافه کردن commit message)
git commit -m "your commit message here"
- -a یا --all (add و commit کردن در یک دستور)
git commit -a -m "your commit message here"
- --amend (بهت اجازه میده آخرین کامیتت رو اصلاح کنی و تغییرش بدی)
git commit --amend
نکته: استفاده از amend برای تمیز کردن کامیت های local عالیه و وقتی کارتو انجام دادی، میتونی ورژن آپدیت شده اش رو push کنی. با این حال، بهتره که از تغییر دادن کامیت هایی که قبلا پابلیش کردی، اجتناب کنی.
4. چطور commit message های خوبی بنویسم؟
اینجا یک تمپلیت عالی برای یک commit message خوب وجود دارد.
[optional Ticket-Id] <type>[optional scope]: <description>
[optional body]
(JIRA-231) feat (dashboard): add sign-out button
----or----
build: update version
----or----
(JIRA-333) fix (profile): dummy commit
IMPORTANT CHANGE
to show how to add body in the commit
5. The commit type can be
feat:
کامیت هایی که feature جدید اضافه میکنند.
fix:
کامیت هایی که یک باگ رو fix میکنند.
refactor:
کامیت هایی که کد رو باز سازی (یعنی تغییر ساختارش) یا باز نویسی میکنند، با این حال تو رفتار و logic کد تغییری ایجاد نمیکنند.
perf:
کامیت هایی که به نوعی میتوان گفت از نوع ویژه refactor commit ها میباشند و performance رو بهتر میکنند.
style:
کامیت هایی که رو معنی کد و دستورها تاثیری ندارند (white space, formatting, missing semi-colons, etc)
test:
کامیت هایی که تست اضافه میکنند یا اینکه تست های موجود رو اصلاح میکنند.
docs:
کامیت هایی که فقط برای documentation هستن.
build:
کامیت هایی که فقط برای فرایند و اجزای ساخت یک پروژه هستند مثل dependency هاش یا مثل ورژن پروژه و ...
ops:
کامیت هایی که برای اجزای operational یا عملیاتی مثل infrastructure، deployment, backup, recovery و ... هستند.
chore :
کامیت های متفرقه، مثلا اصلاح کردن gitignore و از این قبیل.
6. The commit scope can be
یک scope باید از یک نام که توصیف کننده مکان یا section ای هست که کدت رو در اون بخش تغییر دادی، تشکیل بشه و این نام داخل پرانتز قرار بگیره.
feat(profile): add button for update call
7. تو میتونی از این قوانین برای طراحی کامیت هات استفاده کنی
- خط subject ات رو به 50 کاراکتر محدود کن.
- با حروف بزرگ بنویس خطه subject یا description ات رو.
- آخر خط subject ات نقطه نزار
- خط subject رو با body به وسیله یک خط خالی جدا کن.
- تو خط subject ات از افعال امری استفاده کن، برای مثال بهجای Added feature، بنویس Add feature
- بخش body ات رو با ۷۲ کاراکتر محدود کن.
- از body برای توضیح دادن اینکه چیو تغییر دادی و چرا تغییر دادی استفاده کن.
8. Final Note
مهمترین بخش یک commit message اینه که اون باید واضح و با معنی باشه.
امیدوارم از خوندن این مقاله لذت برده باشید، لطفا با دوستان و همکارانتان به اشتراک بگذارید. همچنین اگر منبعی دارید که به همراه نکات بالا میتونه به شما کمک کنه، لطفا تو کامنت ها باهامون به اشتراک بگذار.
التماس دعا، بسیار سپاسگذارم.
مطلبی دیگر از این انتشارات
یه دیس Redis
مطلبی دیگر از این انتشارات
نکات مهم Concurrency در Golang
مطلبی دیگر از این انتشارات
تفاوت بین Processو Threadچیست؟