حضور در جامعه برنامهنویسانی که از سراسر دنیا به این کار مشغول هستند و فرصت و حوصله پاسخ دادن به سؤالات و چالشهای یکدیگر را دارند میتواند بسیار جذاب و مفید باشد. گیت هاب یکی از این جوامع است.
گیت هاب چیست؟
یکی از بزرگترین انجمنهای توسعه دهندگان وب در جهان github است.
در واقع باید این را بگوییم که گیت هاب پلتفرمی است که در آن توسعه دهنگان وب از سراسر جهان در آن گرد هم آمده و با یکدیگر ارتباط و همکاری دارند. در گیت هاب شما به عنوان توسعه دهنده وب میتوانید پروژههای خود را با همکارانتان یا هر فرد دیگری که مایل باشید به اشتراک بگذارید و به صورت مشترک روی یک پروژه کار کنید. به این ترتیب به سادگی میتوانید نسخههای قبلی یک نرم افزار را ارتقا دهید بدون این که تغییر یا اختلالی در نسخههای فعلی ایجاد شود.
github کار کردن روی کدها را بسیار ساده کرده است. به کمک این پلتفرم میتوانید به کوتاهترین و ناپیدا ترین خط کد خود دسترسی پیدا کنید و در صورت لزوم آن را تغییر دهید. اما جذابترین ویژگی گیتهاب این است که به کمک آن میتوانید با سایر کدنویسان در جهان ارتباط برقرار کنید. تیم بسازید و بهطور مشترک روی پروژههای مختلف کار کنید.
هر دو سرویس گیت هاب و گیت لب که امروز درباره آنها صحبت میکنیم، مخزن هایی در بستر وب مبتنی بر Git هستند.
گیت چیست؟
Git یک سیستم کنترل ورژن یا version control system میباشد که توسط لینوس توروالدز، خالق هسته لینوکس طراحی شده است. هدف اصلی این سرویس فراهم کردن محیطی برای برنامه نویسان بود تا بتوانند به صورت گروهی روی یک پروژه مشترک کار کنند.
به کمک Git میتوانید یک پروژه نرم افزاری ایجاد کنید که به راحتی توسط خودتان و دیگران قابل تغییر میباشد. اطلاعات پروژه شما میتواند توسط دیگران هم قابل ردیابی یا تغییر باشد. Git این اطلاعات را تحت ساختاری به نام Repository یا مخزن ذخیره میکند. پس Repository یک محیط در Git است که برنامه نویسان در آنجا کدهای خود را به ذخیره کرده، به اشتراک میگذارند، تست و به طور کلی با سایر برنامه نویسان همکاری میکنند.
مزایای github چیست؟
مزایای گیتهاب بسیار زیاد و دلایلی که به خاطر آن از این پلتفرم استفاده میکنیم برای هر کد نویسی متفاوت است. اما اولین دلیل این است که در آن امکان همکاری نرم وجود دارد. همچنین امکان تست و کنترل نسخه دلیل دیگری است که github را برای کد نویسان جذاب کرده است.
مزیت دیگر گیت هاب این است که امکان یادگیری مباحث جدید و زبانهای برنامه نویسی تازه در آن فراهم است. کافی است کمی روی آن وقت بگذارید تا ببینید که چه دریای وسیعی از دانش و اطلاعات در آن وجود دارد که فرا گرفتن آنها میتواند شما را در حوزه کاریتان تبدیل به یک فرد نخبه کند.
این ویژگی که افراد قادرند نسخه خود را با هر کسی که تمایل دارند به اشتراک بگذارند تا مورد بررسی و تحلیل واقع شده و اگر اشکالی در آن وجود دارد رفع شود، جزو جذابیتهای غیر قابل انکار گیت هاب است. در حال حاضر بسیاری از تیمهای کد نویسی یا شرکتهایی که بهطور تخصصی در این زمینه کار میکنند عضو github هستند و در این پلتفرم پروژههای خود را پیش میبرند.
مزایای گیت هاب
۱. مدیریت کد منبع
گیت هاب به تیمها این امکان را میدهد تا کدهای پروژههای خود را به راحتی مدیریت کنند. github شکلی کارآمد به توسعهدهندگان امکان مشارکت در توسعه پروژههای برنامه نویسی و همچنین پیگیری تغییرات و بهروزرسانیهای انجامشده را میدهد.
۲. همکاری و کارتیمی
گیت هاب ابزارهایی برای همکاری در توسعه نرمافزار فراهم میکند. توسعهدهندگان میتوانند با استفاده از امکاناتی همچون Pull Requests، بهروزرسانیهای کدها را مرور کرده و بهبود ببخشند.
۳. مدیریت مشکلات و درخواستها
تیمها میتوانند مشکلات و درخواستهای ویژهای که برای پروژه وجود دارد را از طریق سیستم مدیریت مشکلات گیت هاب پیگیری کنند. این ابزار امکان ثبت، پیگیری و حل مشکلات را کنترل می کند.
۴. سهولت در نسخهبندی
گیت هاب به برنامهنویسان این امکان را میدهد که نسخههای مختلف پروژه را با استفاده از شاخهها (Branches) مدیریت کنند. و به تیمها کمک میکند که بهروزرسانیها و تغییرات را در جداولی جداگانه انجام دهند و در نهایت آنها را با هم ادغام کنند.
۵. پیگیری پروژه
توسعهدهندگان میتوانند از نزدیک تغییراتی که در پروژهها صورت گرفته را پیگیری کنند. که ای مساله باعث شفافیت بیشتر در فرآیند توسعه میشود.
۶. مدیریت دسترسی
گیت هاب به مدیران امکان مدیریت دسترسیها به پروژهها را میدهد و از این طریق میتوانند تعیین کنند که کدامیک اعضای تیم به کدام بخشهای پروژه دسترسی داشتهباشند.
۷. تکامل و جامعهی متنباز
گیت هاب جزء متنبازها است و به برنامهنویسان این امکان را میدهد تا با دیگر افراد از سراسر جهان در پروژههای مشترک همکاری کنند و از تجربیات یکدیگر در زمینه برنامه نویسی بهرهمند شوند.
برخی دیگر از کاربردهای github
مدیریت تسکها و پروژهها
ابزارهایی برای مدیریت پروژهها و تسک ارائه میدهد تا توسعهدهندگان بتوانند فعالیتها و برنامههای کاری خود را بهبود دهند.
به اشتراک گذاری پروژههای متنباز
توسعهدهندگان میتوانند پروژههای نرمافزاری خود را به صورت متنباز در گیت هاب github منتشر کنند تا افراد دیگر بتوانند از کدها استفاده کنند، به آنها کمک کنند و بهبوداتی را اعمال کنند.
مشارکت در پروژههای جامعه
گیت هاب به توسعهدهندگان امکان میدهد تا در پروژههای متنباز مشارکت کنند و به جامعه نرمافزاری عمومی کمک کنند.
مدیریت مستندات
میتوان اطلاعات و مستندات مرتبط با پروژهها را در گیت هاب ایجاد و مدیریت کرد تا توسعهدهندگان و کاربران به راحتی به اطلاعات مورد نیاز دسترسی داشته باشند.
آزمایش و تست کدها
توسعهدهندگان میتوانند قابلیتهای جدید را با آزمایش و تست کدها در محیطهای جداگانه برای بهبود کیفیت نرمافزار اجرا کنند
نمایش وبلاگ فنی و پروفایل شخصی
گیت هاب به توسعهدهندگان امکان میدهد تا وبلاگ فنی و پروفایل شخصی ایجاد کنند
GitLab چیست؟
گیت لب هم مثل گیت هاب یک سیستم کنترل نسخه میباشد که اجازه میدهد برنامه نویسان کدهای خود را با هم به اشتراک بگذارند. این سرویس با زبان برنامه نویسی Ruby و Go طراحی شده است. وقتی برندهایی مثل IBM، سونی، علی بابا و ناسا از گیت لب استفاده میکنند در برنامه نویسان یک اطمینان خاطر ایجاد میشود که این سایت قابل اعتماد است. زمانی که گیت لب سرورهای خود را تغییر داد و از مایکروسافت به گوگل کوچ کرد، مشکلاتی برای کاربرانی ایرانی این سرویس به وجود آمد.
تفاوت های دو سرویس Gitlab و Github
سطح دسترسی
در گیت لب میتوانید سطح دسترسی افراد را با توجه به نقشی که در سایت دارند، تنظیم کنید یا تغییر دهید. اما در گیت هاب مشخص میکنید که یک نفر بتواند Repository شما را بخواند یا یا در آن تغییر ایجاد کند ( Read/Write ). در گیت لب تعیین سطح دسترسی کمک خوبی است. مثلا میتوانید بدون دسترسی فرد به سورس کد، دسترسی Issue Tracker به او بدهید. این قابلیت برای شرکتهای بزرگی که نقشهای مختلفی داخل سازمان دارند بسیار مفید است.
CI / CD متفاوت
یکی از تفاوتهای بزرگ گیت هاب و گیت لب در همین مورد است. CI مخفف Continuous integration میباشد که در بسیاری از مواقع زمان انجام پروژه را بسیار کاهش میدهد. گیت لب سرویس CI رایگان مختص خودش را دارد و شما را از یک CI اکسترنال بی نیاز میکند. اگر هم در حال حاضر از CI خارجی استفاده میکنید به راحتی آن را با ابزارهایی مثل Jenkins یا Codeship ادغام کنید.
گزارش مشکلات
در گیت هاب و گیت لب میتوانید مشکلاتی که یک پروژه دارد را به تیم آن گزارش کنید. گفتیم که یکی از اهداف سیستمهای کنترل نسخه مشارکت افراد در پروژههای مختلف است. وقتی برنامه نویسان ایرادهای یکدیگر را پیدا کرده و آنها را به هم اطلاع بدهند، نتیجه مشترکی حاصل میشود و این نتیجه چیزی نیست جزء پیشرفت نرم افزار. هر دو سرویس گیت لب و گیت هاب از یک نسخه ساده و در عین حال قدرتمند برای ارسال مشکلات استفاده میکنند. میتوانید یک محیط گرافیکی جذاب مثل Usersnap را به این سرویسها متصل کنید تا کار با آنها جذابتر هم بشود. هر دو پلتفرم در این مورد بسیار عالی عمل کردند و نمیتوان ایرادی به کار هیچکدام از آنها گرفت.
درون ریزی و برون ریزی
فرض کنید در حال حاضر از گیت هاب استفاده میکنید، اما بنا به دلایلی میخواهید این سرویس را کنار گذاشته و سراغ گیت لب بروید. آیا این کار شدنی است؟ به عبارتی میخواهیم ببینیم میتوانیم در یکی از این دو سرویس از پروژه خود Export گرفته و در سرویس دیگر به راحتی آن را Import کنیم؟ گیت لب در این مورد بسیار خوب کار کرده است. با یک مستندسازی قوی به شما نشان میدهد که چطور از سایر ورژن کنترلها مثل Github، Bitbucket یا غیره به گیت لب مهاجرت کنید. در مقابل گیت هاب هم یک Importer دارد و به شما اجازه میدهد کدهای خود را از سیستم هایی مثل Subversion، Mercurial یا TFS به این سرویس منتقل کنید. وقتی صحبت از خروجی گرفتن میشود، گیت لب واقعا گل کاشته است. میتوانید از پروژه خود به شکلهای مختلف خروجی بگیرید. اما گیت هاب کمی محدودتر بوده و در خروجی گرفتن از Repositoryها تنوع و امکانات گیت لب را ندارد.
اصطلاحات متداول github
برای استفاده از گیت هاب نیاز است با مفاهیمی مانند Repository، Pull Request، Fork، Merge و Commit آشنا شوید.
Repository : این اصطلاح به یک مخزن برای آپلود پروژههای برنامه نویسی کاربران در گیت هاب، اشاره دارد.
Fork: منظور از اصطلاح فورک در github چیست؟ اگر قصد دارید تغییری در کد ایجاد کنید، باید با انتخاب کلید فورک، یک نسخه کپی از مخزن مورد نظرتان را به اکانت خود انتقال دهید. این کار به شما اجازه میدهد که بدون تغییر در کد اصلی برنامه بتوانید تغییرات دلخواه خود را بر روی آن اعمال کنید.
Pull Request: پس از ایجاد فورک، میتوانید با استفاده از این ویژگی از سازنده اصلی بخواهید که تغییراتی که مدنظر دارید را اعمال کند.
- اگر توسعهدهنده مایل باشد تا تغییراتی را که بر کد اعمال کرده است را وارد مخزن اصلی کند، یک درخواست Pull به مالک اصلی مخزن میکند تا تغییرات اعمال شده را وارد پروژه اصلی کنند. (دقت کنید که Pull Request با Pull تنها فرق میکند.)
- زمانی که میخواهید آخرین بروزرسانی یک مخزن را دریافت کنید، آن مخزن را Pull میکنید. فرض کنید همکار شما تغییراتی را در پروژه انجام داده است، اما این تغییرات تنها در کامپیوتر همکار شما و مخزن اصلی پروژه است. برای بهروزرسانی پروژه و مخزنی که به طور محلی (Local) در سیستم شما ذخیره شده است. میبایست از Pull استفاده کنید.
Merge: در صورت موافقت صاحب امتیاز کد با در خواست شما، قادر است کد را به جای نسخه اصلی بارگذاری کند.
- اگر بعد از بررسی تغییرات، مالک اصلی پروژه بخواهد تغییرات اعمال شده را وارد مخزن کند، میتواند تمامی این تغییرات را Merge (ادغام) کرده و وارد مخزن اصلی کند.
Commit: Commit امکان اعمال تغییرات و ثبت آنها را فراهم میکند و در صورت بروز اشتباه با استفاده از این ویژگی میتوانید به راحتی به مراحل قبلی برگردید.
برخی دیگر از اصطلاحات رایج در گیت هاب :
- Push: زمانی که برنامه نویس بخواهد کدی که درون سیستمش نوشته است و یا تغییراتی که بر روی مخزن محلی (Local) اعمال کرده را وارد مخزن آنلاین کند، از Push استفاده میکند.
- Commit: هرگونه تغییری که در مخزن اعمال شود. یک Commit نیز ایجاد میشود. Commitها تاریخچه پروژه هستند و بهوسیله آنها میتوان تمامی مراحل یک پروژه را از ابتدای ساخته شدن تا انتها بررسی کرد. بنابراین هر Commit دارای یک Id منحصربهفرد نیز است که مشخص کند هر تغییرات چه بودهاند و توسط چه کسی انجام شده است.
- Clone: به طور خلاصه یک Clone یک کپی محلی از یک مخزن است.
از دیگر امکانات و ویژگی های گیت هاب میتوان به موارد زیر اشاره کرد:
- 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) میباشد و یک محیط توسعه برای نوشتن و ویرایش کد به شما اختصاص میدهد و از طریق خود گیت هاب میتوانید اقدام به ساخت پروژه و نوشتن کد کنید. همچنین این ابزار به طور خیلی ساده کانفیگ میشود و شما قادر هستید تا کدهای نوشته شده خودتان را در آن بارگذاری کنید. ابزارهای اضافه کردن افزونهها، قابلیت کامل کردن کدها و خیلی از ابزارهای دیگر به طور پیشفرض در این ویرایشگر وجود دارد.
ساخت اکانت گیت هاب
عضویت در گیتهاب رایگان است. به راحتی میتوانید یک حساب کاربری در آن ایجاد کرده و کار خود را آغاز کنید. با این حساب کاربری رایگان به بانک وسیعی از اطلاعات دسترسی خواهید داشت. ضمن آن که میتوانید از ویژگی ردیابی مشکل در تکه کدهای خود استفاده کنید و امکان به اشتراک گذاری پروژهها و مدیریت آنها نیز به شما داده میشود.
تنها اشکالی که میتوان به حساب کاربری رایگان گیتهاب نسبت داد این است که شما اجازه دارید به جز خودتان فقط ۳ نفر دیگر را به پروژهها اضافه کنید. بههرحال کار کردن با این نسخه به منظور آشنا شدن با فضای Github و به اشتراک گذاشتن پروژههای کوچک به شدت توصیه میشود.
Git را نصب کنید
همانطور که اشاره کردیم ، گیت هاب روی Git اجرا میشود. Git یک سیستم کنترل نسخه است که توسط اسطوره برنامه نویسی ” لینوس توروالد ” ایجاد شده است. git ابزار جذابی است که به برنامه نویسان کمک میکند تا با یکدیگر همکاری داشته باشند، به صورت مشترک روی یک پروژه کار کنند، نرم افزارها را ارتقا دهند و اشکالات موجود روی نسخههای قبلی اپلیکیشنها را برطرف کنند.
وظیفه اصلی Git این است که اشکالات یا تغییرات را ردیابی کند و این امکان را برای تیمها فراهم کند که از راه دور روی یک پروژه مشترک کار کنند.
Git را در گوگل جستجو کنید و آن را روی سیستم خود نصب کنید.
حال یک Repository یا مخزن ایجاد کنید
توجه کنید که قبل از انجام هر کاری در گیت هاب باید یک مخزن یا Repository در آن ایجاد کنید. در فضای github به مخزن repo گفته میشود و این کلمه معادل واژه پروژه است. هر repo در واقع فضایی است که در آن هر چیزی که مربوط به یک پروژه است گرد آوری و سازمان دهی میشود. چیزهایی مثل تصاویر، اکسل شیتها، ویدئوها و بهطورکلی هر چیزی که برای راه اندازی پروژه خود به آن نیاز دارید.
اغلب افراد در repo یک فایل read me قرار میدهند که حاوی همه اطلاعاتی است که برای پروژه مذبور به آن نیاز است. به این ترتیب هر فرد جدیدی که به یک پروژه بپیوندد با خواندن این فایل در جریان جزئیات پروژه قرار گرفته و میتواند کار خود را آغاز کند.