گیت و گیتهاب سیستمهای کنترل نسخهی رایج بین توسعهدهندگان هستند که برای کار با آنها باید ابتدا با مفاهیم بنیادی این سیستمها آشنا شوید.
اگر بهعنوان کاربر اندروید حداقل یک بار سراغ رام کاستوم رفته باشید، محال است نام گیتهاب (Github) را ندیده باشید. تقریبا تمام توسعهدهندگان اندروید از این سرویس برای انتشار منابع پروژههای خود استفاده میکنند؛ اما بسیاری از کاربران در مواجهه با گیتهاب، بخشها و اصطلاحات آن سردرگم میشوند. در این مقاله به چیستی گیت، گیتهاب و نحوهی کار با آنها میپردازیم.
اسم گیتهاب از دو بخش گیت و هاب تشکیل شده است. در زیر هرکدام را بهصورت جداگانه بررسی میکنیم.
گیت در گیتهاب
برای فهم گیتهاب، ابتدا باید با گیت آشنا شویم. گیت یک سیستم کنترل نسخهی متن باز است که توسط خالق لینوکس، لینوس تروالدز، ساخته شد. گیت مانند سایر سیستمهای کنترل نسخه از قبیل سابورژن، CVS و مرکوریال است؛ اما اساسا سیستم کنترل نسخه چیست؟ وقتی توسعهدهندگان چیز جدیدی مانند یک اپلیکیشن خلق میکنند، مدام تغییراتی در کدهای آن میدهند تا اولین نسخهی رسمی و غیر بتا آمادهی انتشار شود. این روند در بهروزرسانی برای نسخههای بعدی نیز ادامه دارد.
سیستمهای کنترل نسخه تغییرات و بازنگریهای توسعهدهندگان را در یک مخزن مرکزی ذخیره میکنند. با این کار همکاری بین توسعهدهندگان آسان میشود؛ به این شکل که هر توسعهدهنده میتواند نسخهی جدید را دانلود کند، تغییرات را در آن اعمال و سپس آپلود کند. کلیهی توسعهدهندگان قادر به مشاهدهی تغییرات جدید، دانلود آنها و مشارکت در پروژه خواهند بود.
مقالههای مرتبط:
مایکروسافت تصاحب گیت هاب با پرداخت ۷.۵ میلیارد دلار را تایید کرد
آموزش نصب لینوکس روی ویندوز ۱۰ با استفاده از هایپر وی
همچنین، کسانی که نقشی در پروژه ندارند، میتوانند فایلهای آن را دانلود و استفاده کنند. کاربران حرفهای لینوکس احتمالا با این روند آشنایی کامل دارند؛ چرا که استفاده از گیت، سابورژن و سرویسهای مشابه از ملزومات کامپایل کردن یک برنامه از سورسکد آن است.
هاب در گیتهاب، سیستم کنترل نسخهای است که توسط اکثر توسعهدهندگان ترجیح داده میشود؛ زیرا نسبت به سایر سیستمها برتریهایی دارد. مثلا در ذخیرهی تغییرات فایلها بهتر عمل میکند. در بخشهای بعدی این مقاله به نحوهی کار با گیت خواهیم پرداخت.
در دنیای رایانه، هاب به تجهیزات سختافزاری گفته میشود که از آن اشتراکگذاری شبکه با گجتهای مختلف استفاده میشود و در نتیجه هاب به نوعی شبکه را گسترش میدهد. هاب در گیتهاب نیز چنین مفهومی دارد. توسعهدهندگان پروژههای خود را در گیتهاب ذخیره میکنند و از این طریق به شبکهی عظیم توسعهدهندگان دنیا وصل میشوند. در گیتهاب این امکان وجود دارد که پروژهای را از مخزن توسعهدهنده به مخزن خود کپی و در آن تغییرات اعمال کنید و سپس درخواست اعمال تغییرات را به صاحب پروژه بفرستید تا در پروژهی اصلی اعمال کند. امکان پرسش و پاسخ نیز در این شبکهی گیت فراهم است.
حالا که با مفاهیم گیت و گیتهاب آشنا شدیم به نحوهی کار با این سرویسها میپردازیم.
آموزش کار با گیت
نیازهای بنیادی
قبل از هرچیز لازم است مواردی را نصب کنید. برای اینکار نسخهی متناسب با سیستمعامل خود را از اینجا دانلود و نصب کنید. اگر از لینوکس استفاده میکنید، از طریق پکیج منیجر نیز میتوانید اقدام کنید.
در مرحلهی بعد، از آنجایی که در روند آموزش، یک مخزن شامل یک کد و یک README خواهیم ساخت، یک دایرکتوری برای آن در نظر بگیرید.
پس از آن، به عملیات معمولی نظیر init، کلون، کامیت و diff میپردازیم. البته، عملیات پیشرفتهتری نیز وجود دارد که در مراحل اولیه نیازی به آنها نخواهید داشت.
راهاندازی یک مخزن (Repository)
قبل از شروع کار با گیت، باید یک مخزن پروژه راهاندازی کنید تا به کمک گیت آن را مدیریت کنید. ترمینال را باز کنید و در دایرکتوری پروژهی خود دستور . git init را وارد کنید.
آموزش گیت
با این کار یک دایرکتوری مخفی با نام git. در دایرکتوری پروژهی شما ساخته خواهد شد. این دایرکتوری همان مسیری است که گیت دیتابیس و تنظیمات خود را در آن ذخیره میکند تا تغییرات پروژهی شما را دنبال کند.
کلون یا کپی کردن یک مخزن
راه دیگری برای دسترسی به مخزن وجود دارد که به کلونینگ مشهور است. درست مثل بررسی مخزن در سایر سیستمها، اجرای کد git clone <repository URL> یک کپی کامل از مخزن مورد نظر به سیستم شما منتقل خواهد کرد. سپس، میتوانید تغییرات دلخواه را در آن اعمال کنید. روند اعمال تغییرات ساخت تغییرات، اعمال موقت آنها بدون وارد کردن در مخزن اصلی (staging)، اعمال تغییر در مخزن یا کامیت (commit) را شامل میشود.
افزودن فایل جدید
در این مرحله میتوان از زبانهای برنامهنویسی مختلف مانند پایتون، روبی، Go یا هر زبان دیگری استفاده کرد. ما در این آموزش از زبان php که معمولتر است استفاده میکنیم. فایلی به نام index.php را در دایرکتوری خود ایجاد و کد زیر را در آن وارد کنید.
;?php print “Hello World”;
بعد از ذخیرهی فایل، دستور git status را از ترمینال اجرا کنید. این دستور وضعیت حاضر مخزن کار شما را نشان میدهد. نتیجهی به نمایش درآمده باید مشابه تصویر زیر باشد که در آن index.php بهعنوان یک فایل untracked یا بررسینشده فهرست شده است.
آموزش گیت
حالا طرز کار با چند فایل بدون اعمال تغییرات در مخزن را بررسی میکنیم. برای اینکار یک فایل دوم به نام README.md بسازید. در این فایل جزئیاتی مثل نام پروژه، نام و نشانی ایمیل خود را وارد کنید. دستور git status را مجددا اجرا کنید. خواهید دید که اینبار دو فایل بهعنوان بررسینشده فهرست شدهاند.
آموزش گیت
حالا میخواهیم index.php را بهاصطلاح استیج (stage) کنیم. فایلی که استیج میشود؛ یعنی تغییرات آن انجام گرفته اما هنوز در مخزن اصلی اعمال نشده است. برای اینکار دستور git add index.php را وارد کنید. حالا، دستور وضعیت گیت (git status) را مجددا اجرا کنید. خواهید دید که index.php بهعنوان فایلی جدید در بخش تغییرات در انتظار اعمال (changes to be commited) فهرست شده است و README.md در همان بخش Untracked files قرار دارد.
آموزش گیت
تنظیمات
در این مرحله همهچیز آمادهی اعمال تغییرات یا commit است؛ اما قبل از اینکار باید با تنظیمات ویرایشگر که گیت هنگام نوشتن پیامهای کامیت مورد استفاده قرار میدهد آشنا شوید.
اگر از لینوکس استفاده میکنید گیت بهطور پیشفرض، از برنامههایی مانند pico، vi، vim یا emacs استفاده خواهد کرد. اگر با این برنامهها آشنایی ندارید، ممکن است بخواهید آنها را با نرمافزاری مثل Notepad، TextEdit یا Gedit عوض کنید. برای اینکار دستور زیر را از ترمینال اجرا کنید:
git config –global core.editor <your app’s name
در قسمت آخر کد به جای your app’s name نام نرمافزار مورد نظر خود را وارد کنید.
تنظیمات دیگری مانند تغییر نام و ایمیل و چگونگی نمایش پیام کامیت نیز قابل انجام است. ما در این آموزش از vim بهعنوان ادیتور استفاده میکنیم؛ اما شما میتوانید انتخاب متفاوت خود را داشته باشید.
اعمال اولین تغییر
کامیت در گیت شباهت بسیار زیادی با کامیت در سایر سیستمهای کنترل نسخه مانند سابورژن دارد. روند کار به این شکل است که کار را آغاز میکنید و پیامی جهت توضیح اینکه دلیل تغییر انجام گرفته چیست وارد میکنید و فایل تغییر مییابد. پس دستور git commit را اجرا کنید. با این کار ویرایشگر بهصورت خودکار باز میشود و الگوی زیر را نمایش میدهد.