زمان تخمینی مطالعه: 7 دقیقه
با این 10 دستور گیت پیشرفته مهارتهای کنترل نسخه خود را برای حل مشکلات و حفظ یک مخزن Git تمیز بهبود دهید. آیا تا به حال به این فکر کردهاید که هنگام استفاده از Git چه کاری میتوانید انجام دهید تا در مقابل مدیر خود شبیه یک حرفهای به نظر برسید؟ در این پست، با 10 دستور گیت و میانبر پیشرفته Git آشنا میشویم که شما را در نسخهسازی، نگهداری و اشتراکگذاری کد کارآمدتر میکند. احتمالاً از قبل اصول commit کردن، push کردن، واکشی و انشعاب کردن با گیت را میدانید. اما دستورات و ویژگیهای کمتر شناخته شده زیادی وجود دارد که میتواند مهارتهای شما را ارتقا دهد. پس از خواندن این مطلب، چند ترفند ساده در آستین خود خواهید داشت تا با مهارت گیت خود همکاران را تحت تأثیر قرار دهید. در ادامه با چند دستور گیت آشنا خواهیم شد.
Add & Commit
شما چندین بار فایلها را به این روش اضافه و commit کردهاید، اما اگر به شما بگویم میتوان آن را در یک خط با پرچم «-am» انجام داد، چه؟
$ git add .
$ git commit -m "new project"
به جای دستور بالا میتوانید دستور زیر را امتحان کنید، دستور زیر تغییرات فایل را اضافه کرده و commit را با استفاده از پیام ایجاد میکند.
$ git commit -am "new project"
[master 17d7675] new project
4 files changed, 2 insertions(+), 1 deletion(-)
Amend
میتوانید نام پیام commit فعلی خود را با استفاده از پرچم «–amend» تغییر دهید و پیام جدید را بنویسید. این به شما در ارسال پیام های تصادفی کمک میکند.
$ git commit --amend -m "Love"
[master 7b7f891] Love
Date: Mon Jan 22 17:57:58 2024 +0500
4 files changed, 2 insertions(+), 1 deletion(-)
میتوانید قبل از push کردن به مخزن راه دور، تغییرات اضافی را در commit فعلی وارد کنید. برای انجام این کار، باید تغییرات فایل را اضافه کنید و سپس با استفاده از پرچم --amend
آن را commit کنید. برای حفظ پیام commit قبلی، به سادگی از پرچم «–no-edit» استفاده کنید.
$ git add .
$ git commit --amend --no-edit
[master f425059] Love
Date: Mon Jan 22 17:57:58 2024 +0500
6 files changed, 2 insertions(+), 34 deletions(-)
لغو تاریخچه از راه دور
اگر میخواهید یک commit محلی را push کنید و تاریخچه راه دور را بدون رسیدگی به مشکلات لغو کنید، میتوانید از پرچم «–force» استفاده کنید. با این حال، توجه به این نکته مهم است که استفاده از پرچم اجبار توصیه نمیشود و تنها زمانی باید از آن استفاده کرد که کاملاً از کاری که انجام میدهید مطمئن باشید. به خاطر داشته باشید که استفاده از پرچم اجبار(Force)، تاریخچه راه دور را بازنویسی میکند.
$ git push origin master --force
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 16 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 357 bytes | 357.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/kingabzpro/VSCode-DataCamp.git
8f184d5..f425059 master -> master
دستور Revert
برای لغو یک commit در Git، میتوانید از دستور ‘revert’ استفاده کنید. با این حال، این دستور هیچ commitی را حذف نمیکند. در عوض، یک commit جدید ایجاد میکند که تغییرات ایجاد شده توسط commit اصلی را خنثی میکند. ما میتوانیم از «log» با پرچم «–oneline» برای مشاهده تاریخچه commit به شکل کوتاهتر استفاده میکنیم.
$ git log --oneline
f425059 (HEAD -> master, origin/master) Love
8f184d5 first commit
برای بازگشت به commit قبلی، از دستور “git revert” و سپس شناسه commit استفاده میکنیم. این یک commit جدید با تغییرات commit قبلی ایجاد میکند.
$ git revert 8f184d5
دستور Codespace
اگر میخواهید بهره وری خود را در GitHub افزایش دهید میتوانید با GitHub Code Spaces، اکنون میتوانید کد خود را مستقیماً در مرورگر خود ویرایش و اجرا کنید. برای دسترسی به این ویژگی، کافی است به مخزن مورد علاقه خود بروید، کلید نقطه (“.”) را روی صفحه کلید خود فشار دهید و شما را به VSCode هدایت میکند.
میتوانید تغییراتی در کد ایجاد کنید و آنها را به مخزن راه دور خود push کنید. با این حال، اگر میخواهید کد را در ترمینال اجرا کنید، باید Codespace را در فضای ابری اجرا کنید. نسخه رایگان یک گزینه عالی برای اجرای کد پایتون در مرورگر شما ارائه میدهد.
Stash
هنگام کار بر روی یک پروژه، میتوانید فایلها را به یک منطقه مرحلهبندی اضافه کنید و سپس آنها را برای ذخیره پیشرفت فعلی خود commit کنید. با این حال، راه دیگری وجود دارد که میتوانید کار خود را با استفاده از دستور “stash” به راحتی ذخیره کنید. وقتی از «stash» استفاده میکنید، پیشرفت فعلی خود را بدون اضافه کردن آن به قسمت مرحلهبندی(staging area) یا انجام آن ذخیره میکنید. این به شما امکان میدهد پیشرفت خود را ذخیره کرده و هر زمان که نیاز دارید آن را بازیابی کنید. ما پیشرفت فعلی خود را با ارائه یک نام و پنهان کردن آن ذخیره خواهیم کرد.
$ git stash save new-idea
Saved working directory and index state On master: new-idea
میتوانید فهرست ذخیره خود را مشاهده کرده و برای بازیابی آن، فهرست مربوطه را یادداشت کنید.
$ git stash list
stash@{0}: On master: new-idea
ذخیره ما از “ایدههای جدید” در شاخص 0 ذخیره میشود. برای بازیابی آن، از این دستور استفاده کنید:
$ git stash apply 0
On branch master
Your branch is up to date with 'origin/master'.
تغییر نام Branch
شما میتوانید نام شعبه پیش فرض خود را به چیزی مناسب تر تغییر نام دهید. در این صورت نام “master” را به “main” تغییر میدهیم.
$ git branch -M main
با استفاده از دستور زیر میتوانید تغییرات را تأیید کنید:
$ git status
On branch main
Your branch is up to date with 'origin/master'.
تزیین لاگها
اگر میخواهید تاریخچه دقیقی از تمام commit های انجام شده در مخزن فعلی مشاهده کنید، میتوانید از دستور git log استفاده کنید. با این حال، خواندن خروجی ممکن است دشوار باشد. برای خوانایی بیشتر، میتوانید از پرچمهای «graph»، «decorate» و «oneline» استفاده کنید. این تغییرات ایجاد شده در چندین شاخه و نحوه ادغام آنها را نشان میدهد.
$ git log --graph --decorate --oneline
برگشت branch
آیا تا به حال اتفاق افتاده که چندین بار به branch جدید تغییر داده و نام branch قبلی را فراموش کرده باشید؟ در این حالت حتما مجبور شدهاید از دستور git branch -a برای مشاهده لیست نام branch ها استفاده کنید. با این حال، راه سادهتری برای بازگشت به branch اصلی با استفاده از خط تیره «-» پس از دستور «git checkout» وجود دارد. ابتدا شاخه جدید Git “neo” را ایجاد میکنیم.
$ git branch neo
ما به شاخه “neo” سودئیچ میکنیم.
$ git checkout neo
Switched to branch 'neo'
برای بازگشت به شاخه اصلی از دستور زیر استفاده میکنیم:
$ git checkout -
Switched to branch 'main'
کپی تغییرات از راه دور
ما در مورد نادیده گرفتن مخزن راه دور یاد گرفتهایم. بیایید یاد بگیریم که چگونه با استفاده از مخزن راه دور، مخزن محلی را نادیده بگیریم.ما از دستور “fetch” برای دریافت آخرین تغییرات از مخزن راه دور استفاده خواهیم کرد.
$ git fetch origin
سپس، از دستور “reset” با پرچم “hard” برای لغو هرگونه تغییر محلی با نسخه راه دور استفاده میکنیم. لطفاً توجه داشته باشید که با این کار هرگونه تغییرات محلی برای همیشه کنار گذاشته میشود.
$ git reset --hard origin/master
HEAD is now at f425059 Love
اگر هنوز فایلهای ردیابی نشده وجود دارد، میتوان آنها را با استفاده از دستور زیر حذف کرد:
$ git clean -df
نتیجه گیری
در این مقاله، چند دستور گیت(Git) را پوشش دادهایم که برای دانشمندان داده و مهندسان نرمافزاری و برنامه نویس که روی یک پروژه داده و یا هوش مصنوعی مشترک کار میکنند، حیاتی است. دانستن این دستورات میتواند به شما کمک کند تا از حوادث جلوگیری کنید و مشکلات را خیلی سریعتر حل کنید.