چگونه گیت را بفهمیم؟

آموزش سریع و مختصر گیت - وب‌پژوه
آموزش سریع و مختصر گیت - وب‌پژوه

این متن را در جواب به سؤالات کارآموزم نوشتم، هرچند که باید از ابتدا نوشته بودم، اما هنوز هم دیر نیست و امیدوارم به خوانندگان کمک کند! به یاد داشته باشید که بهترین روش برای یادگرفتن هر چیزی، این است که خود آن را انجام داده و تمرین کنید.


مفاهیم اولیه

چرا گیت مهم است؟

بیایید با نقل قول از اولین خطی که در ویکیپدیا درباره‌ی گیت آمده است، درس را شروع کنیم:

گیت یک سیستم کنترل نسخه برای ردگیری تغییرات در فایل‌های کامپیوتری و هماهنگ‌شدن گروهی از افراد در کارکردن بر روی آن فایل‌ها می‌باشد.

پس کلیدی‌ترین و مهم‌ترین کاری که گیت انجام می‌دهد، آن است که به تیم‌ها اجازه می‌دهد که کدها را به طور همزمان در همان پروژه اضافه (و البته ادغام) کنند، بنابراین با گیت می‌توان به صورت تیمی روی پروژه‌های بزرگ‌تر و پیچیده‌تر هم به صورت اثرگذار و مفید، کار کرد! البته قابلیت‌های گیت به همین ختم نمی‌شود؛ شما می‌توانید تغییرات را برگردانید یا برای قابلیت‌های جدید، Branch (شاخه) جداگانه بسازید، تداخلی که در هنگام Merge (ادغام) رخ می‌دهد را حل کنید و غیره.

گیت چگونه کار می‌کند؟

گیت در یک Repository (مخزن) می‌نشیند و Commitهایی که صادر می‌کنید، به گیت خواهند گفت که شما از تغییرات جدیدی که در کدها صورت گرفته، راضی هستید. در واقع Commitها به Branchها اعمال می‌شوند و اگر بر Branchهایی غیر از Branch اصلی قرار بگیرند، می‌توانید بعداً آن‌ها را ادغام کرده و با شاخه‌ی اصلی مخزن ادغام سازید و باید بدانید که تمام این کارها در یک پوشه با نام git. که در مسیر پروژه ایجاد شده ذخیره می‌شوند.

برای آنکه کدهای خود را با همکارانتان به اشتراک بگذارید، تغییرات را به Repositoryتان Push می‌کنید، و برعکس، اگر بخواهید تغییرات همکاران را به سمت خودتان کشیده و ببینید، از Pull استفاده می‌کنید. (کلمه‌ی Push یعنی هل‌دادن و Pull یعنی کشیدن، پس اگر چیزی را به همکارانمان بدهیم، باید مخزن را هل بدهیم تا به دست او برسد و اگر بخواهیم تغییرات او را بگیریم، مخزن را به طور خود می‌کشیم، اینطور حفظ کنید! مترجم)


سرویس‌های عمومی میزبانی گیت
سرویس‌های عمومی میزبانی گیت

حالا Github، Gitlab و Bitbucket را توضیح بده!

خب، از اینکه پرسیدی، خوشحالم! این‌ها سرویس‌های مدیریت مخزن (repository management services) هستند و نقش مهم و پررنگی را در توسعه‌ی نرم‌افزار مدرن ایفا می‌کنند. اگر شما شیوه‌ی کار با Github را بلد باشید، در کارکردن با Gitlab یا Bitbucket هم به مشکل برنخواهید خورد! پس به عبارت ساده‌تر باید بگویم: گیت خود ابزار است، و گیت‌هاب یک سرویس برای پروژه‌هایی است که از گیت استفاده می‌کنند.

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

هر کدام از سه سیستمی که نام برده شدند به شما قابلیت جستجوکردن بین پروژه‌ها و دنبال‌کردن توسعه‌دهندگان را می‌دهد، حال فهمیدید که چرا شناختن گیت و سرویس‌های آن مهم است؟ حالا قبل از اینکه وارد دستورات شویم، دو قانون مهم و کلیدی باقی مانده که باید همیشه در کارکردن با گیت مد نظر داشته باشید:

  • قانون اول: برای هر پروژه، یک Repository بسازید.
  • قانون دوم: برای هر قابلیت، یک Branch جدید بسازید.

دستورات گیت

برای شروع کار با گیت، باید از قبل آن را روی کامپیوترتان نصب کرده باشید، و اگر تاکنون این کار را نکرده‌اید، به اینجا مراجعه کنید.

ساختن مخزن جدید: git init

در پوشه‌ی پروژه وارد شده و برای افزودن گیت به آن، از این دستور استفاده کنید. بلافاصله پوشه‌ای به نام git. اسخته می‌شود.

دستور git add

این دستور یک یا چند فایل تغییریافته را به Stage می‌فرستد. برای آنکه فایل مشخصی را اضافه کنید، از دستور زیر استفاده کنید:

git add filename.py

برای انتقال فایل‌های جدید، تغییریافته و یا حذف‌شده، از این استفاده کنید:

git add -A

و برای انتقال فایل‌های جدید و تغییریافته، از این استفاده می‌کنید:

git add .

و همچنین برای انتقال فایل‌های تغییریافته و حذف‌شده، از این دستور استفاده می‌کنید:

git add -u

دستور git commit

این دستور فایل‌های Stage را در تاریخچه‌ی نسخه ثبت می‌کند، و m- به آن معناست که یک پیغام برای این کامیت پس از آن می‌آید که باید عبارتی توضیحی باشد و همکاران شما با خواندن آن بدانند که چه تغییری در این کامیت انجام شده است.

git commit -m "bug fix"

دستور git status

این دستور فایل‌ها را در دو رنگ سبز و قرمز لیست می‌کند؛ رنگ سبز نشان‌دهنده‌ی آن است که فایل به Stage اضافه شده، اما هنوز Commit نشده است، ولی رنگ قرمز یعنی آنکه فایل هنوز به Stage اضافه نشده است.

git status

کارکردن با Branchها

ساختن Branch

با دستور زیر می‌توانید یک Branch جدید به نام branch_name (که یک نام دلخواه است) بسازید:

git branch branch_name

ورود به یک Branch

برای آنکه از یک Branch به یکی دیگر منتقل شوید، از این دستور استفاده کنید:

git checkout branch_name

خلاصه‌ی دو دستور قبلی

یک دستور میانبر وجود دارد که هم Branch را می‌سازید و هم به آن منتقل می‌شوید:

git checkout -b branch_name

گرفتن لیست Branchها

برای گرفتن لیست شاخه‌هایی که در مخزن شما وجود دارد، و نیز برای دانستن اینکه در کدام شاخه قرار دارید، از دستور زیر استفاده کنید:

git branch

دستور git log

این دستور، تاریخچه‌ی تغییرات Branch فعلی شما را نشان می‌دهد.

دستورات Push و Pull

دستور git push

تغییراتی که تا لحظه‌ی فعلی Commit شده‌اند را به Remote Repository (یعنی مخزنی که روی سرور است و همکاران شما همگی به آن وصل هستند، مترجم) ارسال می‌کند.

دستور git pull

تغییرات را از Remote Repository گرفته و به کامپیوتر شما می‌آورد.


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


چند ترفند!

تغییراتی که کامیت نکرده‌اید را دور بیندازید!

برای این کار، از دستور زیر استفاده کنید:

git reset --hard

فایلی را بدون حذف‌شدن از کامپیوتر شما، از گیت پاک کنید!

گاهی از دستور git add استفاده می‌کنید و بعد متوجه می‌شوید که فایلی را که نباید، اضافه کرده‌اید! اکنون باید آن فایل را از Stage خارج کنید و در فایل gitignore. (این فایل در مسیر پروژه‌ی شما توسط گیت ساخته می‌شود و در هر خط از آن نام یک دایرکتوری یا فایل را اضافه می‌کنید تا گیت آن‌ها را نادیده بگیرد) آن را وارد کنید تا برای بار دوم اشتباه نکنید:

git reset file_name
echo filename >> .gitignore

ویرایش پیغام یک کامیت

به آسانی می‌توانید پیغام یک کامیت را ویرایش کنید، کافیست از این دستور کمک بگیرید:

git commit --amend -m "New message"

منبع اصلی:

https://www.freecodecamp.org/news/understanding-git-basics-commands-tips-tricks/

مترجم: خودم 😊