توسعه دهنده و طراح رابط کاربری توییتر من: @aliraam / برای ارتباط با من به apirani3784 در جیمیل ایمیل بزنید.
رعایت الگوها برای نوشتن commit بهتر در Git
نوشتن یک کامیت (commit) هنگام استفاده از git میتونه کمک شایانی هنگام ایجاد revision history بکنه. اما قبل از این مورد باید کل اعضای تیم روی یک الگو به توافق برسند و طبق همون الگو جلو برند، همین مورد میتونه تو پروژه های شخصی هم قرارداد بشه.
تو این مطلب باهم بررسی میکنیم که چطور بتونیم یک کامیت بهتر بزنیم و اصلا دلیل خوب کامیت زدن چی هست
1 - کامیت (commit) چی هست اصلا؟
کامیت یک command هست برای ذخیره تغییرات تو local repository بعد از اینکه تو stag قرار میگیره. ما برای تغییراتی که انجام میدم کامیت میزنیم تا بدونیم که روال تغییرات به چه صورتی بوده و چه تغییراتی داشتیم. برای کامیت زدن option های متفاوتی داریم:
- با استفاده از -m
git add static/admin/config.yml
git commit -m "Setup multiple roles for netlify-cms git gateway"
- با استفاده از -a or --all
تو این روش همه تغییرات شامل فایل های tracked، modified و حذف شده کامیت میشن
git commit -a -m "Add a new role for netlify-cms git gateway"
- با استفاده --amend
این option آخرین کامیت رو با همه تغییرات حال حاضر stag بازنویسی میکنه یا یک message کامیت جدید میزنه روی کامیتی که به remote repository ارسال نشده
git add .
git commit --amend -m "Update roles for netlify-cms git gateway"
رعایت الگوی Semantic
توی الگوی Semantic به طور کلی یک commit مشابه زیر هست:
<type>(<scope>): <subject>
مقدار type باید برابر با یکی از آیتم های زیر باشه:
build
: ایجاد تغییرات مرتبط (برای مثال: اضافه کردن dependencies های خارجی مثلا با npm)chore
: اضافه کردن تغییراتی که برای همه مشخص نیست (برای مثال: تغییر دادن تو فایل .gitignore)feat
: اضافه کردن ویژگی جدیدfix
: رفع یک باگdocs
: تغییرات مربوط به مستنداتrefactor
: تغییری که نه یک ویژگی اضافه میکنه نه مشکلی رو حل میکنه. (برای مثال تغییرات در نام گذاری متغییرات)perf
: تغییراتی که باعث بهبود کارایی میشهstyle
:تغییراتی که مرتبط با تغییرات ظاهری هستtest
:اضافه کردن تست جدید یا تغییر در تست های قبلی
مثال های از توضیحات بالا:
git feat "commit message here" -> git commit -m 'feat: commit message here'
git docs "commit message here" -> git commit -m 'docs: commit message here'
git chore "commit message here" -> git commit -m 'chore: commit message here'
git fix "commit message here" -> git commit -m 'fix: commit message here'
git refactor "commit message here" -> git commit -m 'refactor: commit message here'
git style "commit message here" -> git commit -m 'style: commit message here'
git test "commit message here" -> 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://www.conventionalcommits.org/en/v1.0.0/
- https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716
- https://github.com/fteem/git-semantic-commits
برخی از مقالات من در ویرگول:
مطلبی دیگر از این انتشارات
گیت و Three tree
مطلبی دیگر از این انتشارات
چالش پروژه ( فراموشی pullrequest در گیت )
مطلبی دیگر از این انتشارات
چطور تغییرات Stash شده در Git را به کامپیوتر دیگر منتقل کنیم