ثبت (ذخیره) یک نسخه جدید (Snapshot) از تغییرات در مخزن (Repository) محلی، با دستور
git commit ، در Git
دستور git commit یکی از اصلی ترین و مهم ترین دستورات در Git است. وظیفه اصلی آن ثبت (ذخیره) یک نسخه جدید (Snapshot) از تغییرات شما در مخزن (Repository) محلی است.
به زبان ساده تر، وقتی روی پروژه تان کار می کنید و به نقطه ای می رسید که تغییراتتان کامل شده و می خواهید آن را برای همیشه در تاریخچه پروژه ذخیره کنید، از این دستور استفاده می کنید.
در اینجا کاربردها و نکات کلیدی آن را به صورت دقیق توضیح می دهیم:
۱. ذخیره سازی تغییرات در مخزن محلی
برخلاف git add که فقط فایل ها را به منطقه موقت (Staging Area) اضافه می کند، دستور git commit یک عکسبرداری (Snapshot) از وضعیت فعلی فایل های موجود در Staging Area گرفته و آن را به عنوان یک شیء دائمی در پایگاه داده محلی Git (مسیر
.git ) ذخیره می کند. این یعنی تا زمانی که این کامیت را به سرور (مثلا GitHub) پوش نکنید، فقط روی سیستم خودتان ذخیره شده است.
۲. ایجاد نقطه بازگشت (Checkpoint)
هر کامیت یک شناسه یکتا (Hash) مانند
a1b2c3d دارد. با این شناسه، شما می توانید در آینده به هر نقطه ای از تاریخچه پروژه بازگردید. اگر خطایی کردید یا بخشی از کد را اشتباه حذف کردید، با استفاده از git checkout یا git revert می توانید به کامیت قبلی برگردید.
۳. ثبت توضیحات (پیام) برای تغییرات
شما حتما باید همراه با این دستور، یک پیام (Message) بنویسید تا مشخص کند چه تغییری در این نسخه اعمال شده است. این کار باعث می شود تاریخچه پروژه قابل فهم و پیگیری باشد.
نحوه استفاده (سینتکس):
ساده ترین حالت:
مثلا:
نکته: اگر از
-m استفاده نکنید، Git یک ویرایشگر متن (مثل Vim یا Nano) باز می کند تا پیام خود را در آن بنویسید.
دو حالت مهم هنگام استفاده:
۱. کامیت معمولی (بعد از اینکه فایل ها را با git add اضافه کردید):
۲. کامیت با مخفف (Skip Staging): اگر می خواهید همه تغییرات فایل هایی که قبلا توسط گیت Tracked می شوند را بدون نیاز به git add کامیت کنید، از گزینه
-a استفاده کنید:
(توجه: این دستور فایل های جدید (Untracked) را شامل نمی شود.)
بهترین روش ها (Best Practices):
پیام کوتاه و مفید بنویسید: پیام کامیت باید در کمتر از ۵۰ کاراکتر، خلاصه تغییر را برساند.
از فعل حال (Present Tense) استفاده کنید: مثل "Add feature" نه "Added feature".
هر کامیت باید یک کار مشخص را انجام دهد: مثلا یک کامیت برای رفع باگ، یک کامیت جداگانه برای اضافه کردن قابلیت جدید. از کامیت های بزرگ و چندمنظوره پرهیز کنید.
خلاصه:
git commit یعنی "تغییراتی که انتخاب کرده ام (Staged) را به عنوان یک نسخه جدید در تاریخچه پروژه محلی ام قفل می کنم".