۱۰ دستور گیت (Git) که باید آنها را بدانید — فهرست کاربردی
در این مقاله به بررسی چند دستور گیت میپردازیم که شما به عنوان یک توسعهدهنده، دانشمند داده یا مدیر محصول باید بشناسید. ما به دستوراتی از گیت که به منظور بررسی، حذف کردن یا منظم ساختن استفاده میشوند میپردازیم. همچنین روشهای مختلف برای عدم استفاده از Vim و صرفهجویی در زمان با اسامی مستعار در Bash وجود دارند را معرفی کرده و در عین حال نکاتی پیرامون پیکربندی ویرایشگر گیت را مطرح و بررسی میکنیم.
بررسی تغییرات
ابتدا به سرغ دستورهایی که برای بررسی تغییرات هستند میرویم.
- git diff – با این دستور میتوانید همه تغییرات فایل را به صورت محلی مشاهده کنید. یک نام فایل میتواند به آن الحاق شود تا تغییراتی را برای یک فایل نمایش دهد.
- git log – همه تاریخچه کامیت را ببینید. همچنین میتوانید از این دستور به صورت git log -p my_file برای مشاهده یک فایل استفاده کنید. با زدن q از آن خارج میشوید.
- git blame my_file – با این دستور میبینید که چه کسی چه چیزی را در my_file تغییر داده است.
- git reflog – سابقهای از تغییراتی که در Head ریپازیتوری محلی صورت گرفته است را نمایش میدهد. این دستور برای یافتن موارد حذف شده مفید است.
بررسی مسائل مختلف با گیت دشواری چندانی ندارد. به طور عکس گیت گزینههای بسیار زیادی برای حذف و بازگردانی موارد تغییرات فایل و کامیتها معرفی کرده است.
بازگردانی تغییرات
git reset ،git checkout و git revert سه دستوری هستند که در گیت برای بازگردانی تأثیرات تغییرهای صورت گرفته روی ریپازیتوری مورد استفاده قرار میگیرد. این دستورها میتوانند پیچیده باشند. git reset و git checkout میتوانند روی هر دو مورد کامیتها و فایلهای منفرد استفاده شوند؛ اما git revert تنها در سطح کامیت استفاده میشود.
اگر صرفاً با کامیت های محلی خود سر و کار دارید که در کارهای ریموت همکاران ادغام نشده است، میتوانید از هر کدام از این دستورها استفاده کنید. اگر روی یک پروژه تیمی کار میکنید و باید تغییرات صورت گرفته یک کامیت روی یک شاخه ریموت را خنثی کنید، ابزاری که باید استفاده کنید git revert است.
هر کدام از این دستورها میتوانند گزینههای متنوعی داشته باشند. برخی از موارد آنها شامل فهرست زیر است:
- git reset --hard HEAD – با این دستور تغییرات stage شده و نشده از زمان آخرین کامیت لغو میشوند.
شما میتوانید به جای Head، کامیت دیگری را ذکر کنید که برای لغو کردن تغییرات از آن کامیت به بعد استفاده شود. hard– به این معنی است که هر دو دسته تغییرات stage شده و نشده باید لغو شوند.
ابتدا باید اطمینان حاصل کنید که یک کامیت را از یک شاخه ریموت که همکارانتان روی آن کار میکنند لغو نمیکنید.
- git checkout my_commit – این دستور تغییرات stage نشده از کامیت my_commit به بعد را لغو میکند.
در اغلب موارد از HEAD برای my_commit استفاده میشود تا تغییرات صورت گرفته روی دایرکتوری کاری محلی از زمان آخرین کامیت لغو شوند.
Checkout بهترین ابزار برای بازگردانی تغییرات محلی محسوب میشود. این دستور موجب به هم خوردن تاریخچه کامیت در یک شاخه ریموت که همکاران شما روی آن کار میکنند نمیشود.
اگر از Checkout در یک شاخه به جای کامیت استفاده کنید، HEAD به شاخه ذکر شده تغییر مییابد و دایرکتوری کاری نیز مطابق آن بهروز میشود. این یک استفاده رایجتر از دستور Checkout است.
- git revert my_commit – این دستور به بازگردانی تأثیرات تغییرهای صورت گرفته در my_commit میپردازد.
Revert برای پروژههای تیمی امن است، زیرا سابقهای را که ممکن است کاربران دیگر برای کار خود به آن وابسته باشند را بازنویسی نمیکند.
در برخی موارد تنها میخواهیم فایلهای ردگیری نشده را در دایرکتوری محلی خود پاک کنیم. برای نمونه ممکن است برخی کدها را اجرا کنید که انواع بسیار مختلفی از فایلهایی را ایجاد کرده باشند که نمیخواهید در ریپوی شما موجود باشد. با این دستور میتوانید همه آنها را در یک چشم بر هم زدن پاک کنید.
- git clean –n – با این دستور فایلهای ردگیری نشده را در دایرکتوری کاری محلی حذف کنید.
- فلگ n- برای یک اجرای آزمایشی پیش از حذف کردن هر چیزی است.
- فلگ f- برای حذف واقعی فایلها است.
- از فلگ d- برای حذف دایرکتوریهای ردگیری نشده استفاده کنید.
به صورت پیشفرض فایلهای ردگیری نشده از سوی gitignore. حذف نخواهند شد؛ اما این رفتار را میتوان تغییر داد.
منظمسازی
اینک که با ابزارهای بازگردانی تغییرات در گیت آشنا شدید، نوبت آن رسیده است که با دو دستور دیگر که به نظم بخشیدن به همه چیز منجر میشوند آشنا شوید.
- git commit –amend – تغییرات stage شده خود را به آخرین کامیت اضافه کنید.
اگر هیچ تغییری stage نشده باشد، این دستور صرفاً به شما امکان میدهد که پیام جدیدترین کامیت خود را ویرایش کنید. تنها در حالتی از این دستور استفاده میکنیم که کامیت به شاخه master ریموت منتقل نشده باشد.
- git push my_remote –tags – این دستور همه تگهای محلی را به ریپازیتوری ریموت ارسال میکند و برای نسخهبندی تغییرات مفید است.
اگر از پایتون استفاده میکنید و تغییراتی روی یک بسته که ساختهاید ایجاد میکنید bump2version به طور خودکار تگهای مورد نیاز را برای شما میسازد. زمانی که تگها را push کردید، میتوانید از آنها در release-های خود نیز استفاده کنید.
کمک به رفع مشکلات Vim
در گیت ممکن است به طور تصادفی متوجه شوید که وارد یک جلسه ویرایشگر Vim شدهاید. برای نمونه فرض کنید تلاش کردهاید یک کامیت بدون پیام کامیت را انتشار دهید و Vim به صورت خودکار باز شده است. اگر نمیدانید Vim چست، باید بگوییم که Vim یک ویرایشگر متنی است و برای خروج از آن پس از زدن دکمه Esc ابتدا عبارت q: را وارد کرده و سپس دکمه Enter را بزنید.
اگر میخواهید تغییراتی را که در فایل ایجاد کردهاید ذخیره شود ابتدا کلید i را بزنید تا وارد حالت درج شوید. پیام کامیت را در خط نخست وارد کنید و سپس با زدن کلید Esc و وارد کردن عبارت x: با ذخیره تغییرات از آن خارج شوید.
تغییر ویرایشگر پیشفرض
برای این که کلاً وارد ویرایشگر Vim نشوید، میتوانید ویرایشگر پیشفرض خود را در Git تغییر دهید. برای نمونه برای تغییر ویرایشگر پیشفرض به Atom میتوانید از دستور زیر استفاده کنید:
git config --global core.editor "atom --wait"
اگر Atom را روی سیستم خود نصب داشته باشید، با اجرای دستور فوق میتوانید مشکلات Git را در این ویرایشگر حل کنید.
ایجاد میانبرهایی برای دستورهای Git
با افزودن اسامی مستعار زیر به فایل bash_profile. میتوانید میانبرهایی برای دستورهای گیت تعریف کنید:
alias gs='git status ' alias ga='git add ' alias gaa='git add -A ' alias gb='git branch ' alias gc='git commit ' alias gcm='git commit -m ' alias go='git checkout '
شما میتوانید تغییرات خود را در فهرست فوق اعمال کنید. اگر فایل bash_profile. را ندارید، روی سیستم macOS میتوانید با دستور زیر چنین فایلی را بسازید:
touch ~/.bash_profile
سپس با دستور زیر آن را باز کنید:
open ~/.bash_profile
اینک زمانی که gs را در ترمینال خود وارد کنید، همانند آن است که دستور git status را وارد کرده باشید. دقت کنید که میتوانید فلگهای دیگر را نیز پس از هر میانبر در ترمینال وارد کنید. همچنین میتوانید اسامی مستعار برای گیت بسازید؛ اما این اسامی مستعار پیش از میانبر دستور به عبارت git نیاز دارند.
در این مقاله برخی از دستورهای گیت را معرفی کرده و محیط گیت را برای صرفهجویی در زمان پیکربندی کردیم. اینک شما با مبانی گیت و گیتهاب آشنا شدهاید. امیدواریم از این آموزش بهره لازم و کافی را برده باشید.
اگر این نوشته برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامه نویسی
- آموزش گیت (Git) برای مدیریت نسخه توزیع شده
- مجموعه آموزش های مهندسی نرمافزار
- آموزش تاریخچه گیت (Git) و مقدمات آن
- راهنمای پیشرفته Git برای مبتدیان — به زبان ساده
- اسامی مستعار (Aliases) در GIT — از صفر تا صد
- رفع مشکلات و خطاها در Git — به زبان ساده
==