به عنوان برنامه نویسی که در یک تیم چند نفره کار میکند، احتمالا با مشکل عدم هماهنگی برای کار روی سورس کد و در نتیجه مشکلات مختلفی که برای کد ایجاد میشود، روبرو شدهاید. چاره چنین مشکلی، استفاده از ابزارهای کنترل نسخه یا Version Control است. با این حساب، حتما اسم GitHub هم به گوشتان خورده است. گیت هاب محبوبترین ابزار کنترل ورژن و ریپوزیتوری (Repository) تحت وب است. سایت گیت هاب یکی از محبوبترین سایتها بین برنامهنویسها و توسعهدهندگان است که به کمک آن میتوانند فرایند توسعه نرمافزار را بهبود بدهند. گیت هاب کاملا آنلاین است و نیازی به دانلود برای استفاده ندارد.
ابزارهای VCS مانند گیتهاب که هسته اصل آنها گیت است، هر تغییری را که از زمان ساخت کد روی آن ایجاد شود ذخیره میکنند و با کمک آنها، میتوانید نسخههای مختلف از کد نرمافزار را ببینید، مدیریت کنید و یا حتی در صورت نیاز، بازخوانی کنید. در این مقاله قصد داریم با کنترل نسخه، Git و ابزار تحت وب GitHub آشنا شویم و از کاربردهای آنها صحبت کنیم. با ما همراه باشید.
کنترل نسخه (VCS) چیست؟
ابزارهای کنترل نسخه یا Version Control، از بهترین ابزارهای توسعه نرمافزار هستند که به کمک آنها میتوانید هر تغییری را که روی سورس کد برنامه ایجاد شده است ذخیره کنید، ردیابی کنید و با هر تغییر یک نسخه جدید از کد ایجاد کنید. نکته بسیار مهم این است که با این ابزارها، میتوانید در صورت بروز خطاهای مخرب، به نسخه قبلی برنامه برگردید تا زمان کافی برای رفع خطا را داشته باشید.
هرچه یک پروژه نرمافزاری بزرگتر باشد، لزوم استفاده از ورژن کنترل هم بیشتر میشود. چرا که این فناوری به تیمها کمک میکند تا همزمان باهم، بدون اینکه تغییرات باعث خراب شدن کد شوند، روی یک سورس کد کار کنند و در نهایت نتیجه را پس از اطمینان از صحت عملکرد کد، با سورس اصلی ادغام کنند. البته تمام این ابزارها مختص به برنامه نویسی و مدیریت سورس کد نیستند؛ ابزارهایی مانند Google Docs، Google Sheets و … هم از انواع VCS هستند که هر کدام در زمینههای مختلفی استفاده میشوند.
گیت (Git) چیست و چه کاربردی دارد؟
Git یک نرمافزار کنترل نسخه متن-باز است که توسط لینوس توروالدز، برای مدیریت و ردیابی تغییرات فایلها و سورس کد ایجاد شده است. گیت در واقع یک سیستم ورژن کنترل توزیعشده است؛ به این معنی که تمام سورس کد و تاریخچه آن، علاوه بر سرور مرکزی روی سیستم اعضای تیم هم وجود دارد. به همین خاطر اعضای تیم میتوانند به راحتی روی شاخهها (Branch) کد کار کنند و در نهایت آنها را در کد اصلی ادغام کنند. خوب است بدانید که فرایند GitOps به کمک گیت و پلتفرمهای ابری ممکن میشود.
گیت هاب (GitHub) چیست؟
گیت هاب (GitHub) یک ابزار Version Control تحت وب است که روی بستر گیت ساخته شده است. GitHub به توسعهدهندهها این امکان را میدهد تا به صورت رایگان از ریپوهای عمومی (public) این سیستم برای ایجاد تغییرات و بهبودها روی کد خود استفاده کنند. اما برای استفاده از ریپوهای خصوصی (private)، باید مبلغی را پرداخت کنند که با توجه به پلن انتخابی آنها متفاوت است.
Repository چیست؟
هر ریپو (Repository) شامل تمام فایلهای یک پروژه و تاریخچه تغییرات فایلها است. چندین نفر میتوانند به یک ریپو دسترسی داشته باشند و از دادههای آن استفاده کنند. از گیتهاب میتوانید برای انواع مختلفی از فایلها و پروژهها استفاده کنید؛ اما رایجترین کاربرد آن برای سورس کد پروژههای برنامهنویسی است.
نحوه استفاده از گیت هاب
برای استفاده از این ابزار، روشها و رویکردهای مختلفی وجود دارد و شما میتوانید با توجه به نیاز خود از امکانات و عملکردهای مختلف آن استفاده کنید. اما در حالت کلی، فرایند اصلی گیت هاب به شکل زیر است:
- با استفاده از گزینه Fork یا Branch، میتوانید یک نسخه از کد را کپی بگیرید و بدون اینکه در سورس اصلی تغییری ایجاد شود، تغییرات خود را اعمال کنید.
- با استفاده از دستور Pull میتوانید یک درخواست به مالک اصلی ریپو بفرستید تا به شما اجازه اعمال تغییراتتان را بدهد.
- اگر مالک اصلی ریپو تغییرات شما را تایید کند، میتواند به گزینه Merge این تغییرات را با سورس کد اصلی ادغام کند.
- همچنین اگر بخواهید برعکس Pull عمل کنید و تغییرات روی سیستم شخصیتان (Local) را روی ریپوی آنلاین بفرستید، میتوانید از دستور Push استفاده کنید.
- بعد از ایجاد تغییرات، باید آنها را با استفاده از دستور Commit ثبت و ذخیره کنید. بعد از استفاده از دستور کامیت، یک نسخه جدید از سورس کد ایجاد میشود و هر کامیت، یک شناسه یکتا (Unique ID) دارد.
- در نهایت با استفاده از دستور Clone میتوانید یک نسخه محلی (لوکال) از ریپوی آنلاین را روی سیستم خود داشته باشید.
آشنایی بیشتر با تعاریف و اصطلاحات گیت هاب
با توجه به اینکه در بخش قبلی از اصطلاحات تخصصی گیت هاب استفاده کردیم، در این بخش میخواهیم این اصطلاحات را به صورت مختصر توضیح دهیم.
Fork یا Branch چیست؟
برنچ یا فورک، به عملکردی در github گفته میشود که به کمک آن میتوانید یک نسخه از کد را کپی کنید و هر تغییری که میخواهید را روی آن اعمال کنید. این نسخه جدا از نسخه اصلی است و تا وقتی که آن را با نسخه اصلی ادغام نکنید، تغییرات روی سورس کد اعمال نمیشوند. قابلیت برنچ برای تیمهایی که چندین توسعهدهنده همزمان روی یک پروژه کار میکنند مناسب است.
Pull request چیست؟
با استفاده از قابلیت Pull یا Pull request، میتوانید یک نسخه از کد را روی سیستم شخصی خود کپی کنید. در این حالت میتوانید بدون نیاز به اینترنت تغییرات خود را ایجاد کنید و سپس به کمک دستور Push، این تغییرات را دوباره به ریپو برگردانید.
Commit چیست؟
Commit یا اعمال تغییرات، به حالتی گفته میشود که شما با ذخیره تغییرات یک نسخه جدید از کد میسازید. این نسخه در کنار تمامی نسخههای قبل و بعد از خود در گیت هاب باقی میماند و نشان میدهد که کد قبل و بعد از کامیت چطور بوده است.
موارد استفاده از گیت هاب چیست؟
از GitHub برای ذخیره، ردیابی و همکاری روی پروژههای نرمافزاری در حوزههای مختلف استفاده میشود. برای مثال:
- کسب و کارها از گیت هاب به عنوان یک ابزار VC استفاده میکنند تا اعضای تیم توسعه تغییرات اعمال شده روی سورس کد را ببینند و توسعهدهندهها بتوانند با هم روی آن کار کنند. معمولا تیمهای توسعه نرمافزار، دواپس و … از این ابزار برای هماهنگی بیشتر استفاده میکنند.
- دانشجویان و اساتید برنامه نویسی میتوانند از این ابزار در مواقع مختلف استفاده کنند. مجموعه Student Developer Pack که توسط گیتهاب ارائه میشود، به اساتید و دانشجویان مجموعه از منابع کم هزینه را برای یادگیری میدهد. دانشجویان از این پلتفرم برای یادگیری توسعه وبسایت، کار روی پروژههای برنامهنویسی خلاق و میزبانی رویدادهای مجازی استفاده میکنند.
- توسعهدهندگان نرمافزارهای متن باز، از گیت هاب برای به اشتراکگذاشتن پروژههای خود با سایر افراد استفاده میکنند. در این پلتفرم، جامعه توسعهدهندهها کارهای خود را با سایر افراد به اشتراک میگذارند و روی بهبود سورس کد با هم همکاری میکنند.
- افراد غیر برنامهنویس هم از گیتهاب برای پروژههای مولتیمدیا و مستندسازی استفاده میکنند. برای مثال راهنمای جامع استفاده از خط فرمان با عنوان «The art of the command line» یا ریپوی «Open Source Cookbook» که شامل مجموعهای از دستورهای آشپزی است، از مواردی هستند که به کمک گیت هاب ایجاد شدهاند.
شبکه اجتماعی GitHub
در کنار امکاناتی که گیت هاب برای توسعه به شما میدهد، امکاناتی هم دارد که به شما کمک میکند تا برند شخصی خود را بسازید و مهارتهای خود را به صورت عمومی به نمایش بگذارید. شما میتوانید پروفایل خود را شخصیسازی کنید و نمونه کارهای خود را در پروفایل و ریپو خود قرار دهید. گیتهاب با استفاده از سرویس میزبانی (hosting)، رابط آنلاینی که برای استفاده از گیت دارد و همچنین ابزارهای مدیریت همکاری، امکان کدنویسی تیمی و اجتماعی را برای برنامهنویسها فراهم میکند. در واقع میتوانیم به GitHub به چشم یک شبکه اجتماعی برای توسعهدهندههای نرمافزار نگاه کنیم. اعضای این جامعه میتوانند یکدیگر را دنبال کنند، به کارهای هم امتیاز بدهند، به صورت عمومی یا خصوصی با هم در ارتباط باشند و از بهروزرسانیهای جدید پروژههای متن-باز، با خبر شوند.
شروع کار با GitHub
برای استفاده از گیت هاب و ریپوهای آن، باید مراحل زیر را طی کنید:
در مرحله اول، باید با خط فرمان یا Command Line آشنا شوید. راه ارتباطی کاربر با Github از طریق خط فرمان است؛ بنابراین آشنایی با این رابط و فرمانهای خطی، لازمه استفاده از گیتهاب است. برای یادگیری خط فرمان میتوانید از آموزشهای مختلف استفاده کنید و یا برای سادهتر کردن این فرایند، از نسخه دسکتاپ GitHub کمک بگیرید.
بعد از یادگیری خط فرمان، نوبت به نصب Git میرسد. هرچند گیت به صورت پیشفرض روی سیستمهای Mac و لینوکس نصب شده است، اما در صورت نبود آن روی سیستم، با کمک راهنمایی که در سایت گیت (git-scm) وجود دارد میتواند آن را به سادگی و رایگان نصب کنید. اگر نسخه دسکتاپ گیت هاب را نصب کنید، یک نسخه خط فرمان از گیت هم روی سیستم شما نصب میشود.
حالا که زیرساخت لازم را آماده کردید، باید در GitHub برای خود یک حساب کاربری بسازید. برای این کار به یک ایمیل فعال نیاز دارید. بعد از ثبتنام، یک ایمیل تایید حساب کاربری برای شما میآید و بعد از تایید ایمیل، حساب شما فعال میشود.
حالا شما میتوانید برای خود یک ریپوزیتوری بسازید. در صفحه اصلی روی علامت + بالای صفحه بزنید و سپس گزینه «New repository» را انتخاب کنید.
در صفحه بعد یک اسم برای ریپوی خود انتخاب کنید؛ میتوانید در بخش Description توضیح کوتاهی درباره ریپو بنویسید. سپس نوع ریپو را Public یا عمومی انتخاب کنید و در پایین صفحه، گزینه «Create repository» را بزنید. اولین ریپوی شما ساخته شد و آماده کار است.
مزایای GitHub
همانطور که گفتیم، GitHub برای همکاری مشترک بین توسعهدهندهها ایجاد شده است و یک Version Control توزیع شده است. تیمهای توسعهدهنده با کمک گیتهاب، میتوانند از یک Git Repository مرکزی استفاده کنند و تغییرات مختلفی را که روی سورس کد اعمال شده است، ردیابی کنند.
از مزایای اصلی گیت هاب میتوانیم به موارد زیر اشاره کنیم:
- ردیابی نسخههای مختلف و در صورت نیاز، برگشت به نسخههای قبلی را راحت میکند.
- کار با پروژههای متن باز و ایجاد تغییر و بهبود روی آنها را راحت میکند.
- به فرایند مستندسازی (Documentation) کمک میکند.
- به شما اجازه میدهد تا مهارتهای برنامهنویسی خود را به خوبی به نمایش بگذارید.
- به راحتی با نرمافزارهای مختلف ادغام میشود و فرایند توسعه را راحتتر و سریعتر میکند.
تفاوت گیت هاب و گیت لب
گیت هاب (Github) و گیت لب (Gitlab) هر دو ابزارهای کنترل نسخه و مدیریت ریپوزیتوری هستند که برای بهبود فرایند توسعه نرمافزار استفاده میشوند. گیت هاب بیشتر برای افزایش تعامل توسعهدهندهها و توسعه پروژههای اوپن سورس مورد استفاده قرار میگیرد. گیت لب اما یک سیستم لوکال اما سازگار با ابر (cloud native) است که توسط شرکت گیتلب توسعه داده شده است.
هر دو ابزار نسخههای رایگان و اشتراکی دارند که افراد و شرکتها میتوانند با توجه به نیازمندیهای خود از نسخههای مختلف استفاده کنند. امنیت گیت لب به دلیل برخی از محدودیتهایی که روی ریپوزیتوریها اعمال میکند بیشتر از گیت هاب است و به همین خاطر برای پروژههای مهم میتواند گزینه بهتری باشد. در حالت کلی عملکردهای این دو ابزار تا حد زیادی مشابه یکدیگر است و در برخی محدودیتها و امکانات زیرساختی تفاوت دارند.
جمعبندی؛ مروری بر گیتهاب
در این مقاله سعی کردیم تا مروری بر کلیات GitHub، کاربردهای این ابزار محبوب و نحوه استفاده از آن داشته باشیم. اگر عضوی از یک تیم توسعه هستید و هنوز شروع به استفاده از Git نکردهاید، بهتر است هرچه سریعتر به فکر پیادهسازی این سیستم در پروژه خود باشید. چرا که هر زمان ممکن است با خطایی روبرو شوید که شما را ناچار به برگشت به نسخههای قبلی نرمافزار کند و این کار به کمک گیت، بسیار راحتتر خواهد بود.
همچنین در تیمهای دورکار و یا پروژههای بزرگ، میتوانید از نسخه اشتراکی گیت هاب استفاده کنید تا منابع خود را روی ریپوهای خصوصی نگه دارید. یادگیری گیت و گیتهاب بسیار راحت است و وقت بسیار کمی از شما میگیرد. با کمک منابع مختلف ویدیویی انگلیسی یا فارسی، میتوانید کار با این ابزار حیاتی را یاد بگیرید و از آن در پروژههای خود استفاده کنید.
منابع:
www.techtarget.com | blog.hubspot.com | www.apiumhub.com
سوالات متداول
۱. گیت هاب چیست؟
گیت هاب (GitHub) یک ابزار کنترل نسخه آنلاین و مبتنی بر گیت (git) است. با این ابزار میتوانید کدهای خود را به صورت آنلاین با دیگران به اشتراک بگذارید و تاریخچه تغییرات آن را ببینید.
۲. گیت هاب چه مزایایی دارد؟
GitHub یک ابزار آنلاین است که میتوانید در هرجا به آن دسترسی داشته باشید، از کدهای خود کپی بگیرید تا تغییرات را جدا از سورس اصلی اعمال کنید، با دیگر توسعهدهندگان در ارتباط باشید و فرایند توسعه را بهینه کنید.
۳. گیت هاب و گیت لب چه تفاوتی دارند؟
گیت لب (GitLab) یک ابزار لوکال است که برای استفاده از آن باید آن را روی سیستم خود نصب کنید؛ در حالی که گیت هاب کاملا آنلاین است. این ابزارها از نظر عملکردی تفاوت چندانی با یکدیگر ندارند و هر دو از قابلیتهای پایهی گیت پشتیبانی میکنند.
۴. آیا گیت هاب رایگان است؟
بله، ریپوزیتوریهای عمومی گیتهاب رایگان هستند و میتوانید از آنها استفاده کنید. اما برای استفاده از ریپوهای خصوصی و شرکتی، باید اشتراک گیت هاب تهیه کنید.
دیدگاهتان را بنویسید