گیت هاب یک پلتفرم کنترل ورژن تحت وب است که قابلیت همکاری در آن در بین توسعهدهندگان نرمافزار وجود دارد. کمپانی Microsoft که از بزرگترین مشارکین گیت هاب بود، در سال 2018 این پلتفرم را به قیمت 7.5 میلیارد دلار خرید. گیت هاب در سال 2008 بر روی سیستم Git ایجاد شده است، Git یا گیت در واقع یک سیستم مدیریت کد اپن سورس است که توسط Linus Torvalds (سازندهی سیستم عامل لینوکس) ساخته شده است، هدف از ساخت Git، توسعه سریعتر نرمافزار بود.
به طور کلی، Git برای ذخیره ی سورس کد های پروژه مورد استفاده قرار میگیرد، به وسیله این سیستم میتوان تاریخچه تمامی تغییراتی که بر روی کد انجام شده را مورد بررسی قرار داد. این سیستم به توسعهدهندگان امکان همکاری بر روی یک پروژه را میدهد، چرا که با توجه به ابزارهایی که در اختیار توسعهدهندگان قرار میدهد، میتوان تغییراتی که هر توسعهدهنده بر روی کد اعمال کرده است را بررسی کرد، تا اگر تناقضی در تغییرات وجود داشته باشد بتوان آن را یافت.
گیت هاب به توسعهدهندگان امکان تغییر، تطابق و ارتقاء دادن نرمافزارها را به طور رایگان از طریق مخازن یا ریپازیتوری (Repository)های عمومی میدهد. البته نسخههای پولی این پلتفرم نیز وجود دارد که امکانات بیشتری را در اختیار کاربران قرار میدهد. هر مخزن فارغ از عمومی یا خصوصی بودنش شامل تمامی فایلهای یک پروژه و تاریخچهای از تمامی تغییرات میباشد، مخزن ها میتوانند شامل چندین همکار یا Collaborators باشد (کسانی که بر روی پروژهای به طور مشترک کار میکنند) همچنین این مخازن میتوانند به صورت عمومی و خصوصی باشند.
گیت هاب چگونه کار میکند؟
گیت هاب فرایند کدنویسی به صورت گروهی را با توجه به داشتن سرویس میزبان و واسطهای گرافیکی برای مخزن های ساخته شده توسط Git، راحتتر میکند. همچنین دارای ابزارهای زیادی برای همکاری وجود دارد. در واقع توسعهدهندگان میتوانند به این پلتفرم به دید یک شبکه اجتماعی مخصوص برنامه نویسان نرم افزار نگاه کنند. اعضای گیت هاب قادر هستند تا همدیگر را دنبال (Follow) کنند، به کارهای همدیگر امتیاز دهند، بروزرسانی های پروژه مورد علاقه خودشان را دریافت کنند و به صورت عمومی یا خصوصی به ارتباط با یکدیگر بپردازند.
لیست زیر از مهمترین اصطلاحاتی است که توسعهدهندگان در گیت هاب از آنها استفاده میکنند:
- Fork: فورک در فارسی به معنای چنگال است و در اصطلاح نرمافزاری به عنوان شاخه شناخته میشود. در واقع با فورک کردن یک مخزن، یک کپی از آن مخزن از حساب توسعهدهنده آن وارد حساب شما میشود. شما میتوانید هر تغییرات دلخواهی بر روی یک مخزن انجام دهید بدون اینکه در مخزن اصلی تفاوتی ایجاد شود. بنابراین یک پروژه میتواند در شاخههای مختلف، دارای کدها و امکانات مختلف باشد.
- Pull Request: اگر توسعهدهنده مایل باشد تا تغییراتی را که بر کد اعمال کرده است را وارد مخزن اصلی کند، یک درخواست Pull به مالک اصلی مخزن میکند تا تغییرات اعمال شده را وارد پروژه اصلی کنند. (دقت کنید که Pull Request با Pull تنها فرق میکند.)
- Pull: زمانی که میخواهید آخرین بروزرسانی یک مخزن را دریافت کنید، آن مخزن را Pull میکنید. فرض کنید همکار شما تغییراتی را در پروژه انجام داده است، اما این تغییرات تنها در کامپیوتر همکار شما و مخزن اصلی پروژه است. برای بهروزرسانی پروژه و مخزنی که به طور محلی (Local) در سیستم شما ذخیره شده است. میبایست از Pull استفاده کنید.
- Merge: اگر بعد از بررسی تغییرات، مالک اصلی پروژه بخواهد تغییرات اعمال شده را وارد مخزن کند، میتواند تمامی این تغییرات را Merge (ادغام) کرده و وارد مخزن اصلی کند.
- Push: زمانی که برنامه نویس بخواهد کدی که درون سیستمش نوشته است و یا تغییراتی که بر روی مخزن محلی (Local) اعمال کرده را وارد مخزن آنلاین کند، از Push استفاده میکند.
- Commit: هرگونه تغییری که در مخزن اعمال شود. یک Commit نیز ایجاد میشود. Commitها تاریخچه پروژه هستند و بهوسیله آنها میتوان تمامی مراحل یک پروژه را از ابتدای ساخته شدن تا انتها بررسی کرد. بنابراین هر Commit دارای یک Id منحصربهفرد نیز است که مشخص کند هر تغییرات چه بودهاند و توسط چه کسی انجام شده است.
- Clone: به طور خلاصه یک Clone یک کپی محلی از یک مخزن است.
مزایا و ویژگی های گیت هاب
گیت هاب، همکاری بین توسعهدهندهها را تسهیل کرده و همچنین یک ابزار کنترل ورژن توزیع شده را نیز مهیا میکند. تیمهای توسعه دهنگان قادر هستند تا با یکدیگر بر روی یک مخزن ساخته شده در Git همکاری کنند و از تغییرات همدیگر مطلع شوند و بتوانند به راحتی آنها را بررسی کنند. در کنار ابزارها و ویژگیهای متعددی که خود گیت هاب به صورت پیشفرض دارد، برنامه های Third-Party و سرویسهای زیادی هم برای گیت هاب تاکنون ایجاد شده است.
از دیگر امکانات و ویژگی های گیت هاب میتوان به موارد زیر اشاره کرد:
- GitHub Gist: به کاربران اجازه میدهد تا قطعات کد نوشته شده و یا دیگر Noteها را به اشتراک بگذارند.
- GitHub Flow: یک جریان کاری یا Workflow سبک وزن و بر پایه شاخه است که برای بروزرسانیهای منظم توسعه یک پروژه ساخته شده است.
- GitHub Pages: یک صفحه ایستا برای میزبانی یک پروژه است که امکان دریافت اطلاعات پروژه به صورت مستقیم از مخزن های گیت هاب در آن وجود دارد. صفحات میتوانند برای یک فرد و یا برای یک شرکت بزرگ باشند.
- GitHub Desktop: به کاربران اجازه میدهد به جای این که هربار وارد وبسایت گیت هاب شوند، از طریق دسکتاپ ویندوز و یا مک به گیت هاب دسترسی داشته باشند.
- GitHub Student Developer Pack: یکسری ابزار توسعه رایگان در اختیار دانشآموزان و دانشجویان قرار میدهد که شامل منابع ابری (Cloud Resources)، ابزارهای برنامهنویسی و دسترسیهایی به GitHub میباشد.
- GitHub Campus Experts: برنامهای است که دانشآموزان میتوانند از آن استفاده کنند تا به عنوان یک لیدر در مدرسه بتوانند به توسعه دادن پروژهها، یادگیری مهارتهای جدید و به اشتراک گذاشتن تجربیات خود بپردازند.
- GitHub CLI: یک برنامه متن باز (Open Source)اوپن سورس یا متن باز چیست؟ اوپن سورس به چه معناست؟اوپن سورس یا متن باز چیست؟ این صفحه عالی به بررسی این موارد و همچنین تاریخچه نرم افزار متن باز و نحوه به کارگیری متن باز در توسعه نرم افزار پرداخته است رایگان تحت خط فرمان (Command-Line) است که در آن میتوان از خصوصیات گیت هاب در دسکتاپ استفاده کرد. این برنامه به صورت ترمینال بوده و دستوراتی نظیر Pull Request را میتوان درون این برنامه صدا زد.
- GitHub Codespaces: یک ویرایشگر گیت هاب است که به بر پایه سیستم ابری (Cloud-Based) میباشد و یک محیط توسعه برای نوشتن و ویرایش کد به شما اختصاص میدهد و از طریق خود گیت هاب میتوانید اقدام به ساخت پروژه و نوشتن کد کنید. همچنین این ابزار به طور خیلی ساده کانفیگ میشود و شما قادر هستید تا کدهای نوشته شده خودتان را در آن بارگذاری کنید. ابزارهای اضافه کردن افزونهها، قابلیت کامل کردن کدها و خیلی از ابزارهای دیگر به طور پیشفرض در این ویرایشگر وجود دارد.
کاربرد های گیت هاب
گیت هاب برای ذخیره، پیگیری و همکاری برای ساخت یک پروژه نرم افزاری مورد استفاده قرار میگیرد. در لیست زیر، موارد مختلف استفاده از گیت هاب را مشخص کرده ایم:
- در کسب و کار و بیزینس از گیت هاب به عنوان یک سیستمی برای کنترل ورژن استفاده میشود. همچنین به تیمهای برنامه نویسی این اجازه را میدهد تا تغییرات اعمال شده در سورسکدها را بررسی کنند و بر روی یک کد مشترک همکاری داشته باشند. همین امر باعث شده تا کدنویسهای مختلف بتوانند در آنِ واحد به صورت همزمان بر روی آخرین نسخه یک پروژه کار کنند. بهطور خلاصه میتوان گفت که مدیریت پروژه را سادهتر میکند. در نهایت این که به اشتراک گذاری کدهای نوشته شده بسیار راحتتر صورت میگیرد، چراکه کل پروژه در یک محل مشخصی (درون مخازن) ذخیره شده است.
- مدرسهای برنامهنویسی و دانش آموزان میتوانند از گیت هاب به اشکال مختلفی استفاده کنند. پکهای توسعه دانشآموزان یا Student Developer Pack، به معلمها و دانشآموزان، منابع مختلف و کمهزینهای را ارائه میدهد. دانشآموزان قادر هستند تا با استفاده از این پلتفرم موارد مختلفی را بیاموزند، به عنوان مثال یادگیری برنامهنویسی و توسعه نرمافزار، ساخت وبسایت، کار کردن بر روی یک پروژه خلاقانه و موارد دیگر.
- توسعه دهندگان نرم افزارهای متن باز میتوانند از گیت هاب برای به اشتراک گذاری پروژه خودشان استفاده کنند تا بقیه افراد از آن بهرهمند شوند و یا در ساخت آن پروژه همکاری کنند. به عنوان مثال به رفع ایرادات و باگهای پروژه بپردازند و یا با ایدههای جدید به ارتقاء سطح پروژه، قبل از اتمام مراحل ساخت آن کمک کنند. همین مشارکتها و همکاریهای بین توسعهدهندگان باعث شده تا گیت هاب به عنوان یک شبکه اجتماعی یا Social Media شناخته شود.
- افراد غیر برنامه نویس میتوانند از گیت هاب برای کار کردن بر روی اسنادها (Document) و پروژههای چندرسانهای کار کنند. با امکاناتی که گیت هاب برای همکاری بر روی پروژه در اختیار کاربران قرار میدهد، میتوان بر روی پروژههایی غیر از برنامهنویسی کار کرد. بهعنوان مثال نوشتن کتاب، ساخت موسیقی و کارهای مشابه. همچنین امکان دانلود کردن نرمافزار و برنامههای کاربردی نیز در گیت هاب وجود دارد که افراد متفرقه میتوانند صرفا برای دانلود آنها از گیت هاب استفاده کنند.
شروع کار با گیت هاب
برای ثبت نام در گیت هاب و ساخت یک مخزن یا Repository و شروع کار با آن، کاربران تازه وارد میبایست مراحل زیر را طی کنند:
- یادگیری خط فرمان: کاربران به وسیله خط فرمان یا همان Command Line میتوانند با گیت هاب ارتباط برقرار میکنند. توانایی کار کردن با خط فرمان در واقع از پیش نیازهای کار با گیت هاب است. در این مورد آموزشهای زیادی به صورت کتاب و ویدیو در اینترنت قرار دارد. البته جایگزینهایی هم وجود دارد که بهصورت بصری امکان برقراری ارتباط با گیت هاب را فراهم میکند.
- نصب کردن Git: نرمافزار Git به طور رایگان از طریق وبسایت Git قابل دانلود است. البته نصب GitHub Desktop به طور خودکار ورژن خط فرمان Git را هم نصب میکند. برنامه Git به صورت پیشفرض در خیلی از سیستمهای مک و لینوکس وجود دارد.
- ساخت یک حساب کاربری: بهراحتی میتوانید وارد وبسایت گیت هاب شوید و از آنجا تنها با داشتن یک ایمیل، یک حساب کاربری برای خود ایجاد کنید.
- ساخت مخزن جدید: وارد Homepage گیت هاب شوید، بر روی علامت + کلیک کنید:
بر روی New Repository کلیک کرده تا وارد صفحه ساخت یک مخزن جدید شوید:
در قسمت Repository Name، نام مخزن خود (مثلا میتواند نام پروژه یا نام برند + پروژه باشد) را وارد کنید. تنظیمات دیگر مخزن را هم میتوانید در این قسمت مشخص کنید. مانند خصوصی یا عمومی بودن مخزن. در نهایت صفحه را اسکرول کرده و روی پایینترین دکمه یعنی Create Repository کلیک کنید تا مخزن شما ساخته شود:
اکنون یک مخزن خالی در گیت هاب شما ایجاد شده است که قادر هستید در آن بر روی پروژه خود کار کنید.
جمع بندی
امروزه تقریبا تمامی شرکتهای نرمافزاری و کامپیوتری از گیت هاب برای سیستم کنترل ورژن محصولات خود استفاده میکنند. همچنین از تمامی کارمندان شرکت نیز انتظار میرود که کار با گیت و گیت هاب را بلد باشند، بنابراین اگر قصد کار کردن در شرکتی را دارید، پیشنهاد میشود حتما این پلتفرم را یاد بگیرید. در این مقاله به طور مختصر به بحث در مورد گیت هاب پرداختیم و مهمترین اصطلاحات گیت هاب و ویژگیهای آن را نیز مرور کردیم.
گیت هاب چیست؟
به طور خلاصه گیت هاب یک پلتفرم کنترل ورژن تحت وب است که قابلیت همکاری در آن در بین توسعهدهندگان نرمافزار وجود دارد. توسعهدهندگان نرمافزار بهوسیله گیت هاب میتوانند بهطور مشترک بر روی یک پروژه کار کنند و از تغییرات یکدیگر باخبر شوند.
آیا گیت هاب همان گیت است؟
گیت یک ابزارمتن باز رایگان است، گیت هاب برای شرکت مایکروسافت است و دارای نسخه پولی نیز است. گیت هاب دارای یک سری ویژگیهای اضافی مفید است که کمک شایانی به توسعهدهندگان نرمافزار میکند، به عنوان مثال دارای مخزن بر پایه وب است که کار را برای توسعهدهندگان راحتتر میکند.