رعایت الگوها برای نوشتن commit بهتر در Git

Yancy Min @unsplash
Yancy Min @unsplash


نوشتن یک کامیت (commit) هنگام استفاده از git میتونه کمک شایانی هنگام ایجاد revision history بکنه. اما قبل از این مورد باید کل اعضای تیم روی یک الگو به توافق برسند و طبق همون الگو جلو برند، همین مورد میتونه تو پروژه های شخصی هم قرارداد بشه.

تو این مطلب باهم بررسی میکنیم که چطور بتونیم یک کامیت بهتر بزنیم و اصلا دلیل خوب کامیت زدن چی هست

1 - کامیت (commit) چی هست اصلا؟

کامیت یک command هست برای ذخیره تغییرات تو local repository بعد از اینکه تو stag قرار میگیره. ما برای تغییراتی که انجام میدم کامیت میزنیم تا بدونیم که روال تغییرات به چه صورتی بوده و چه تغییراتی داشتیم. برای کامیت زدن option های متفاوتی داریم:

  • با استفاده از -m
git add static/admin/config.yml
git commit -m &quotSetup multiple roles for netlify-cms git gateway&quot
  • با استفاده از -a or --all

تو این روش همه تغییرات شامل فایل های tracked، modified و حذف شده کامیت میشن

git commit -a -m &quotAdd a new role for netlify-cms git gateway&quot
  • با استفاده --amend

این option آخرین کامیت رو با همه تغییرات حال حاضر stag بازنویسی میکنه یا یک message کامیت جدید میزنه روی کامیتی که به remote repository ارسال نشده

git add .
git commit --amend -m &quotUpdate roles for netlify-cms git gateway&quot

رعایت الگوی Semantic

توی الگوی Semantic به طور کلی یک commit مشابه زیر هست:

<type>(<scope>): <subject>

مقدار type باید برابر با یکی از آیتم های زیر باشه:

  • build: ایجاد تغییرات مرتبط (برای مثال: اضافه کردن dependencies های خارجی مثلا با npm)
  • chore: اضافه کردن تغییراتی که برای همه مشخص نیست (برای مثال: تغییر دادن تو فایل .gitignore)
  • feat: اضافه کردن ویژگی جدید
  • fix: رفع یک باگ
  • docs: تغییرات مربوط به مستندات
  • refactor: تغییری که نه یک ویژگی اضافه میکنه نه مشکلی رو حل میکنه. (برای مثال تغییرات در نام گذاری متغییرات)
  • perf: تغییراتی که باعث بهبود کارایی میشه
  • style:تغییراتی که مرتبط با تغییرات ظاهری هست
  • test:اضافه کردن تست جدید یا تغییر در تست های قبلی

مثال های از توضیحات بالا:

git feat &quotcommit message here&quot -> git commit -m 'feat: commit message here'
git docs &quotcommit message here&quot -> git commit -m 'docs: commit message here'
git chore &quotcommit message here&quot -> git commit -m 'chore: commit message here'
git fix &quotcommit message here&quot -> git commit -m 'fix: commit message here'
git refactor &quotcommit message here&quot -> git commit -m 'refactor: commit message here'
git style &quotcommit message here&quot -> git commit -m 'style: commit message here'
git test &quotcommit message here&quot -> git commit -m 'test: commit message here'
نکته: شما میتونید با لینکی که تو قسمت آخر مطلب گذاشتم از کامیت های Semantic استفاده کنین و یا مثه سابق معادلشون که رو به روشون تو مثال بالا هست استفاده کنید.

پارامتر "scope" اختیاری هست

اسکوپ (Scope) باید یک نام باشه که اشاره به قسمتی از کد میکنه

پارامتر "subject"

  • استفاده الزامی از زمان حال برای مثال به جای استفاده از added یا adds از add در پیام کامیت استفاده کنیم.
  • در آخر پیام کامیت از نقطه . استفاده نکنیم.
  • حروف اول رو به صورت capital ننویسیم.

یک نمونه message کامیت رو تو پایین باهم ببینیم:

feat: add hat wobble
^--^  ^------------^
|     |
|     +-> Summary in present tense.
|
+-------> Type: chore, docs, feat, fix, refactor, style, or test.

اگه میخوای مثال بهتری تو دنیای واقعی ببینین به این لینک سر بزنین.

از اینکه تا انتهای مطلب با من همراه بودین ممنونم، خوشحال میشم اگه نظری دارین راجب این مقاله با من در میان بذارین ☺️

منابعی که در این مقاله ازشون استفاده شده:

برخی از مقالات من در ویرگول:

https://virgool.io/@aliraam/escaped-css-selectors-bawjrbbpm5dy
https://virgool.io/@aliraam/callback-function-in-js-mey4dk3ai8l2