چگونه در git یک commit خوب بزنیم!؟

اگه تا حالا با گیت کار کردی، حتماً می‌دونی که کامیت زدن یکی از مهم‌ترین کارای روزمره‌ته. ولی خیلی‌ها هنوز پیام‌های کامیت رو الکی و بی‌سر و ته می‌نویسن این فاجعه‌اس. چرا؟ چون فلسفه commit رو از بین می‌بره. تو این مطلب می‌خوام بهتون بگم چطوری یه کامیت حرفه‌ای و تمیز بزنید. مخصوصاً با روشی که این روزا خیلی مد شده و تو پروژه‌های اوپن‌سورس و تیم‌های بزرگ حسابی طرفدار داره.  در ابتدا و قبل از چگونگی انجام این فرآیند یعنی دستور commit در git توضیح کوتاهی درباره آن بهتون ارائه می کنم.

کامیت در گیت چیست؟

کامیت (commit) تو گیت یه جور ثبت و ضبط تغییرات پروژه‌اس. هر بار که یه سری فایل رو تغییر می‌دید و به گیت می‌گین «اینارو ذخیره کن»، یه کامیت جدید ساخته می‌شه.
هر کامیت یه شناسه‌ی یکتایی داره که بعداً می‌تونی باهاش برگردی به همون نقطه. و مهم‌تر از همه، شامل پیامیه که شما توضیح می‌دی چه تغییراتی رو ایجاد کردی.

کامیت‌ها باعث می‌شن تغییراتت گم نشه و بتونی تاریخچه‌ی پروژه رو کامل کنترل کنی.
یکی از چیزایی که حسابی نشون می‌ده تو برنامه‌نویس حرفه‌ای هستی، همون پروفایل گیت‌هابته. مخصوصاً اگه دنبال مهاجرت یا کار ریموت هستی، کارفرما اول می‌ره گیت‌هاب تو رو چک می‌کنه. پس کامیت‌های تمیز و مرتب، خیلی بهت امتیاز می‌ده.

دستور commit در git

قبل از commit زدن باید چه نکاتی رعایت کنیم؟

قبل از اینکه کامیت بزنی، یه کم حواستون باشه:

  • تغییراتت رو یه دور کامل چک کنین. مطمئن شین فایل‌هایی که اضافه یا حذف کردی درستن و چیزی جا نمونده.
  • پیام کامیت باید واضح و دقیق باشه. نه خیلی کوتاه و مبهم، نه یه داستان حسین کُرد شبستری طولانی. 😁
  • اگه شک داشتین چی نوشتین، با دوستاتون یا هم‌تیمی‌هاتون یه بررسی نهایی بکنین.
  • اگه نیاز به توضیح بیشتر دارین، می‌تونین از کامیت چندخطی استفاده کنی (با git commit بدون -m).
  • قبل از کامیت، مطمئن شین کدت درست کار می‌کنه و پیش‌نیازهای پروژه رو رعایت کردین.
  • اطلاعات کاربریتون رو تو گیت تنظیم کرده باشی:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

اینا رو رعایت کنی، خیالتون راحت‌تره که کامیتت تمیز درمیاد. اما هنوز کار یه کم دیگه داریم باهم.

چگونگی نوشتن یک commit خوب در گیت

روش مدرن و استاندارد: Conventional Commits

توی این روش، پیام کامیت یه ساختار مشخص داره:

نوع(محدوده): توضیح کوتاه

مثلاً:

feat(back-end): add user authentication
fix(front-end): resolve overlap between logout button and avatar
refactor(db): redesign user table to encrypt password

 

این روش باعث می‌شه تاریخچه‌ی پروژه‌ات خیلی خواناتر بشه، اتوماتیک changelog ساخته بشه و حتی ابزارهای مختلف بتونن ازش استفاده کنن.
جدول زیر انواع رایج این پیشوندها رو نشون می‌ده:

 

مثال معنی پیشوند
feat: add user authentication ویژگی جدید feat
fix: resolve login error رفع باگ fix
docs: update README تغییرات مستندسازی docs
style: improve code formatting تغییرات فرمت/استایل (بدون تغییر منطق) style
refactor: simplify user model بازنویسی کد بدون تغییر رفتار refactor
test: add login validation افزودن یا تغییر تست‌ها test
chore: update dependencies کارهای معمولی پروژه chore
perf: optimize database query بهینه‌سازی عملکرد perf

می‌تونی بعد از نوع، یه محدوده هم بذاری (مثل back-end یا ui) تا مشخص‌تر بشه کجا تغییر کردی.

جزئیات مهم برای نوشتن پیام کامیت خوب

اینا نکاتیه که خیلی‌ها فراموش می‌کنن و باعث می‌شه کامیت‌هاشون ضعیف بشه:

  1.  از فعل ماضی استفاده نکنین
    پیام کامیت باید به صورت امری و زمان حال نوشته بشه (مثل دستور دادن به گیت).اشتباه: added user authentication یا fixed the bug
    درست: add user authentication یا fix login errorانگار داری به گیت می‌گی «این کار رو انجام بده».
  2. توضیحات بیشتر (body) بنویسین
    خط اول (subject) باید کوتاه و خلاصه باشه (معمولاً زیر ۷۲ کاراکتر).
    اگه نیاز به توضیح بیشتر دارین، بعد از یه خط خالی، جزئیات رو بنویسین.
    مثلاً چرا این تغییر لازم بود، چی عوض شد، یا چه چیزی هنوز کامل نشده.
  3. چند کار مختلف رو تو یه کامیت قاطی نکن
    هر کامیت باید فقط یه کار منطقی و مستقل باشه (atomic commit).
    اگه هم فیچر اضافه کردی، هم باگ فیکس کردی، هم تست نوشتی، جداشون کن، تا حد ممکن مگر این که مجبور بشی.
    اینطوری بعداً اگه خواستی یه تغییر خاص رو برگردونی یا بازنگری (review) کنی، خیلی راحت‌تره.
  4. پیام‌های حاشیه و وضعیت موقت رو فراموش نکن.
    گاهی وقتا کار هنوز کامل نشده. می‌تونی تو توضیحات بنویسین:
    WIP: need to add tests to ensure this function works perfectly

    یا از کلمات کلیدی مثل BREAKING CHANGE: برای تغییرات بزرگ استفاده کنین.

  5. نکات دیگه که خیلی کمک می‌کنه:
    1. نقطه در انتهای خط اول نذارین.
    2. از کلمات واضح و انگلیسی ساده استفاده کنین (حتی اگه پروژه‌اتون فارسیه، پیام‌های کامیت معمولاً انگلیسی نوشته می‌شن).
    3. اگه تغییر خیلی مهمه یا API رو به فنا میده، حتماً تو body توضیح بدین که ملت هم بفهمن هدف شما چی بوده.

چند نمونه پیام commit خوب در گیت (با توضیح)

در آخر چند تا مثال میارم که براتون بیشتر جا بیوفته چطور بنویسیم:

feat(auth): add JWT-based user authentication

تو این کامیت خیلی واضح مشخص شده که یه امکان جدید به پروژه اضافه شده. این امکان بخش auth رو درگیر کرده و روش JWT برای احراز هویت کاربر پیاده‌سازی شده.

fix(ui): resolve logout button overlapping with avatar on mobile

اینجا دقیقاً گفته شده یه باگ ظاهری فیکس شده. مشکل مربوط به تداخل دکمه‌ی لاگ‌اوت و آواتار تو حالت موبایل بوده.

refactor(db): redesign user table to encrypt password

این کامیت نشون می‌ده ساختار جدول کاربر تغییر کرده، ولی رفتار کلی سیستم عوض نشده. فقط پسورد دیگه به صورت plain text ذخیره نمی‌شه و رمزنگاری می‌شه.

docs: update installation steps in README

یه تغییر ساده و تمیز تو مستندات. فقط بخش نصب پروژه تو فایل README به‌روز شده.

test(auth): add unit tests for login validation

اینجا فقط تست اضافه شده. هیچ منطق جدیدی به خود کد اصلی اضافه نشده.

نمونه‌ای که هنوز کامل نشده (با پیام حاشیه):

feat(auth): add JWT-based user authentication
WIP: need to develop tests to ensure this function works perfectly

خط اول فیچر اصلی رو اعلام می‌کنه. تو توضیحات هم مشخص کرده که کار هنوز تموم نشده و تست‌ها مونده. اینطوری بقیه اعضای تیم می‌فهمن وضعیت چیه.

chore: upgrade react and related dependencies to latest

کار معمولی پروژه. فقط وابستگی‌ها آپدیت شدن و هیچ فیچر یا فیکسی در کار نیست.

با رعایت این جزئیات، کامیت‌هاتون هم خواناتر می‌شن، هم حرفه‌ای‌تر به نظر می‌رسن و هم تو کار تیمی کلی درد سر یو کم می‌کنن.

حالا برین و از این به بعد کامیت‌هات رو با این استاندارد بزنین! 😉

💬

شاید امروز جواب خیلی از سؤال‌ها را بتوان از AI گرفت، اما تولید مطالب تخصصی، تجربه‌محور و عمیق هنوز به انگیزه نیاز دارد. این نظرات و بازخوردهای شماست که به ما نشان می‌دهد ادامه دادن این مسیر ارزشمند است.

دیدگاه شما چیست؟

نظرات (0)


ارسال نظر

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

عضویت در شبکه‌های اجتماعی

جدیدترین مقالات و نکات برنامه‌نویسی را سریع تر از دیگران مطلع شوید.