git commit
برای ثبت تغییرات در مخزن استفاده می شود. این دستور بعدی بعد از git add است. هر commit حاوی داده های شاخص و پیام commit است. هر commit یک رابطه والد و فرزند را تشکیل می دهد. وقتی فایلی را در Git اضافه می کنیم، در قسمت مرحله بندی انجام می شود. یک دستور commit برای واکشی بهروزرسانیها از ناحیه مرحلهبندی به مخزن استفاده میشود.
صحنه سازی و ارتکاب به هم مرتبط هستند. مرحلهبندی به ما امکان میدهد تا به ایجاد تغییرات در مخزن ادامه دهیم، و زمانی که میخواهیم این تغییرات را در سیستم کنترل نسخه به اشتراک بگذاریم، commit کردن به ما امکان میدهد این تغییرات را ثبت کنیم.
commit ها تصاویر لحظه ای از پروژه هستند. هر commit در شاخه اصلی مخزن ثبت می شود. میتوانیم commitها را به یاد بیاوریم یا آن را به نسخه قدیمیتر برگردانیم. دو commit مختلف هرگز بازنویسی نمی شوند زیرا هر commit commit-id خود را دارد. این commit-id یک شماره رمزنگاری است که توسط الگوریتم SHA (Secure Hash Algorithm) ایجاد شده است.
بیایید انواع مختلف تعهدات را ببینیم.
دستور git commit
دستور commit تغییرات را انجام می دهد و یک commit-id ایجاد می کند. دستور commit بدون هیچ آرگومانی ویرایشگر متن پیش فرض را باز می کند و پیام commit را می خواهد. ما می توانیم پیام commit خود را در این ویرایشگر متن مشخص کنیم. به صورت زیر اجرا خواهد شد:
git commit
دستور بالا یک ویرایشگر پیش فرض را درخواست می کند و یک پیام commit را می خواهد. ما تغییری در newfile.txt ایجاد کردهایم و میخواهیم آن را متعهد کند. به صورت زیر قابل انجام است
همانطور که دستور را اجرا می کنیم، یک ویرایشگر متن پیش فرض را درخواست می کند و یک پیام commit را می خواهد. ویرایشگر متن به شکل زیر خواهد بود:
و در نهایت پس از ثبت متن مورد نظر خروجی زیر به شما نمایش داده خواهد شد:
در خروجی زیر می بینیم که گزینه log در حال نمایش commit-id، جزئیات نویسنده، تاریخ و زمان و پیام commit است. که می توانید با دستور زیر آن را به نمایش در آورید:
git log
Git commit -a
دستور commit همچنین گزینه ای را برای تعیین برخی commit ها ارائه می دهد. برای ثبت snapshot از همه تغییرات استفاده می شود این گزینه فقط فایل های فعلی موجود را در نظر می گیرد و فایل هایی که به تازگی اضافه شده باشند را در نظر نمی گیرد. سناریوی زیر را در نظر بگیرید:
ما برخی بهروزرسانیها را در فایل newfile که قبلاً staging شدهایم انجام دادهایم و یک فایل newfile1.txt ایجاد کردهایم. وضعیت مخزن را بررسی کنید و دستور commit را به صورت زیر اجرا کنید:
git commit -a
دستور بالا از ویرایشگر متن پیش فرض ما درخواست می کند و پیام commit را می خواهد. یک پیام commit تایپ کنید و سپس ذخیره کنید و از ویرایشگر خارج شوید. این فرآیند فقط فایلهایی که قبلاً اضافه شدهاند را commit میکند. فایل هایی که staging نشده اند را commit نمی کند
Git commit -m
گزینه -m از دستور commit به شما امکان می دهد پیام commit را در خط فرمان بنویسید. این دستور از ویرایشگر متن استفاده نمی کند. به صورت زیر اجرا خواهد شد:
git commit -m "Commit message."
همچنین می توانیم از گزینه -am برای فایل های از قبل مرحله بندی شده استفاده کنیم. این دستور بلافاصله یک commit برای فایل های از قبل مرحله بندی شده با یک پیام commit ایجاد می کند. به صورت زیر اجرا خواهد شد:
git commit -am "Commit message."
Git Commit Amend (تغییر پیام commit)
گزینه amend به ما امکان می دهد آخرین commit را ویرایش کنیم. اگر به طور تصادفی پیام commit اشتباهی را مرتکب شده ایم، این ویژگی برای ما یک گزینه وحشیانه است. به صورت زیر اجرا خواهد شد:
git commit -amend
دستور بالا از ویرایشگر متن پیشفرض درخواست میکند و به ما اجازه میدهد پیام commit را ویرایش کنیم.