گیت هاب چیست؟ یعنی نوشتن کدهای مربوط به چنین نرم افزار و برنامه هایی، به تنهایی کار یک شخص خاص نیست و هر شخص یا تیمی، وظیفه کدنویسی بخشی از این برنامه را برعهده دارد. از طرفی دیگر همواره شاهد رونمایی از ورژن های جدید یک برنامه هستیم و شرکت های نرم افزاری به طور دوره ای امکانات و ویژگی های محصول خود را آپدیت میکنند.
در این بین، از GitHub به عنوان بهشتی برای برنامه نویسان یاد میشود. بستری که شرایط همفکری و مشارکت را برای علاقمندان به برنامه نویسی فراهم کرده است. در این مطلب، به طور کامل در خصوص گیت هاب و امکانات و بخش های مختلف آن توضیح خواهیم داد. اما قبل از پرداختن به گیت هاب لازم است تا با گیت آشنا شویم.
گیت چیست؟
گیت هاب یک واژه ترکیبی و متشکل از دو بخش گیت (Git) و هاب (Hub) است. اما منظور از گیت در این عبارت چیست؟ گیت در اصل یک سیستم کنترل ورژن (Version Control System) برای مدیریت پروژه های برنامه نویسی است. این سیستم متن باز، برای اولین بار در سال ۲۰۰۵ میلادی و توسط خالق لینوکس یعنی Linus Torvalds به وجود آمد.
گیت شامل کدهای مختلف برنامه نویسی است و دنیای بسیار گسترده ای دارد. اما طراحان سایت و برنامه نویسان، برای مدیریت پروژه های بزرگ از آن استفاده میکنند. اجازه دهید با ذکر یک مثال، موضوع را برای شما توضیح دهیم.
یک برنامه نویس به طور روزانه با کد های مختلفی سر و کار دارد. او هر روز کدهای نوشته شده را در یک فایل جدید ذخیره میکند. در روزهای آتی، از همین فایل های موجود بکاپ گیری کرده و کدهای جدید را به نسخه کپی شده از فایل های قبل اضافه میکند. این پروسه ایجاد فایل های جدید و ویرایش و ذخیره آنها، میتواند باعث سردرگمی برنامه نویسان شود. از طرفی دیگر، ذخیره سازی این فایل ها و نگهداری آن ها در هارد، ریسک های مرتبط با خود را دارد.
موضوع زمانی پیچیده تر میشود که بخواهیم یک پروژه برنامه نویسی را به صورت تیمی پیش برده و کدنویسی مربوط به هر بخش را، به یک شخص بسپاریم. چون هر بار معلوم نمیشود که آخرین ورژن هر فایل دست کدام یک از برنامه نویسان است و درصد خطا در کار تیمی افزایش مییابد.
برای حل تمامی این مشکلات، از سیستمی به نام گیت رونمایی شد. تا برنامه نویسان و طراحان سایت، بتوانند فایل های مربوط به پروژه خود را مدیریت کنند. این نرم افزار مسئولیت حفظ و نگهداری سورس کدها را بر عهده داشته و امکانات لازم برای انجام گروهی پروژهها را فراهم میکند.
قابلیت های کاربردی گیت در پروژه برنامه نویسی
با استفاده از گیت، انجام کار گروهی برنامه نویسی و کدنویسی برای طراحان بسیار راحت شد. چون این سیستم کنترل ورژن، به شما اجازه میدهد تا تمامی کارهای زیر را در محیط آن انجام دهید:
- امکان جابجایی بین نسخه های مختلف از پروژه برنامه نویسی
- تهیه تاریخچه ای کامل از تمام فعالیت های پروژه
- توانایی اعضای تیم در اضافه کردن توضیحاتی برای تغییرهای ایجاد شده
- شناسایی تغییرات ایجاد شده در بخش های مختلف پروژه و عامل تغییر دهنده آنها
- توانایی مدیر پروژه برای تست و بررسی فایل های مختلف و نهایی کردن آنها (Merge)
- مشخص نمودن اصلی ترین ورژن از پروژه
به طور کلی دو نوع ورژن کنترل برای برنامه نویسان وجود دارد. نوع اول آن مرکزی (Centralized) است؛ یعنی اگر شخصی بر روی یک فایل کار کند، به دیگران اجازه دسترسی به آن فایل داده نخواهد شد. اما نوع دوم توزیع شده (Distributed) نام دارد و چندین نفر می توانند به طور همزمان بر روی یک فایل کار کنند. گیت، نرم افزار کنترل ورژن از نوع دوم است؛ به همین دلیل آن را برای کارهای تیمی و گروهی مناسب میدانند.
گیت هاب چیست؟
گیت هاب در اصل پلتفرمی معتبر برای میزبانی کدهای برنامه نویسی مربوط به پروژه هایی است که از سیستم سورس کنترل گیت استفاده میکنند. بستری که به برنامه نویسان اجازه همفکری و اشتراکگذاری کدهای برنامه نویسی را میدهد. چون استفاده از Git از طریق خط فرمان صورت میگیرد و شاید انجام این کار برای تمامی افراد راحت نباشد. اما گیت هاب یک فضای ابری مبتنی بر Git است که عموم افراد میتوانند از این کنترل نسخه استفاده کنند.
امروزه GitHub به بزرگترین میزبان برای کدهای برنامه نویسی در بستر وب تبدیل شده است. برنامه نویس ها نیز از این بستر استفاده کرده و کدهای نوشته را در پروفایل شخصی خود و در معرض دید عموم قرار می دهند. پس هر کسی میتواند در این کدها تغییراتی جدید ایجاد کرده و آنها را بهبود بخشد. بدین ترتیب، برنامه نویسان با هم فکری یکدیگر، ایرادات کد های برنامه نویسی را رفع میکنند. این موضوع باعث پیشرفت پروژه برنامه نویسی و بهبود خروجی نهایی میشود.
بر اساس آمار ها، بیش از ۹۰ درصد توسعه دهندگان، از گیت هاب استفاده میکنند. چون هیچ محدودیتی در دسترسی کاربران اینترنتی وجود ندارد و هر کسی میتواند در راستای بهبود کدهای موجود در این سایت اقدام کرده و یا برای تمرین از آنها استفاده کند. پس در حال حاضر سایت گیت هاب، یکه تاز صحنه رقابت بین پلتفرم های موجود برای به اشتراک گذاری کدهای برنامه نویسی است.
منبع درآمد گیت هاب چیست؟
اما توسعه دهندگان بسته به تشخیص خود، می توانند پروژه های عمومی و اختصاصی را در گیت هاب تعریف کنند. پروژه عمومی یعنی هر کسی اجازه دسترسی و مشارکت در پیشبرد پروژه را داشته باشد. اما پروژه اختصاصی یعنی تنها یک تیم اختصاصی بر روی این پروژه کار کنند و دسترسی به کدهای آن برای تمامی کاربران سایت، مقدور نباشد.
در سایت گیت هاب ایجاد یک پروژه عمومی رایگان است و هیچ هزینه ای ندارد. اما برای ایجاد پروژه های اختصاصی، توسعه دهندگان باید مبلغی دلاری را پرداخت کنند. پس پروژههای اختصاصی در سایت گیت هاب اصلی ترین منبع درآمد این پلتفرم هستند. چون شرکتهای بزرگ، فضایی را از گیت هاب اجاره کرده و کدهای محرمانه خود را در آنجا قرار میدهند. دسترسی به این کدها تنها مختص اعضایی است که خود این شرکت ها تعیین میکنند.
همین موضوع باعث شده که سایت های دیگری که در زمینه گیت فعالیت دارند، به رقابت با سایت پرطرفدار گیت هاب بپردازند. در رأس این سایت ها، GitLab قرار دارد که به کاربران خود اجازه ایجاد پروژه های اختصاصی را، به صورت رایگان میدهد. از دیگر رقیبان سایت گیت هاب میتوان به موارد زیر اشاره کرد:
- BitBucket
- Jenkins
- Microsoft Team Foundation Server
این سایت ها امکانات رایگان بیشتری را در اختیار کاربران خود قرار میدهند و از این طریق سعی دارند تا با گیت هاب به رقابت پرداخته و برای خود در این بازار، جایگاهی مناسب پیدا کنند.
ویژگی های گیت هاب چیست؟
اما محبوبیت GitHub در بین توسعه دهندگان بیدلیل نیست. این سایت امکانات و ابزارهای مختلفی را در اختیار برنامه نویسان قرار میدهد. برخی از این ویژگی ها مربوط به Git بوده و تعدادی دیگر نیز، مختص خود سایت است. این ویژگی ها باعث متمایز شدن سایت گیت هاب، با دیگر رقبایش شده است. در ادامه به معرفی برخی از این ویژگیها میپردازیم:
۱- Repository
وقتی پروژه ای در سایت گیت هاب ایجاد میشود، تمام کدهای آن در یک Repository (به اختصار Repo) و یا مخزن قرار میگیرند. هر Repo یک URL منحصربهفرد دارد که از طریق آن می توان به کدهای پروژه دسترسی داشت. تمامی کدهای ابتدایی و یا آپدیتهای بعدی مربوط به پروژه را میتوان در Repo آن مشاهده کرد.
۲- Forking a Repo
فرض کنید به عنوان یک کاربر سایت گیت هاب با پروژه ای مواجه شده و نظر شما را به خود جلب میکند. شاید احساس کنید که با اعمال تغییراتی در کدهای برنامه نویسی این پروژه، میتوان آن را بهبود بخشید.
در چنین شرایطی می توانید با استفاده از قابلیت Forking a Repo، یک نسخه جداگانه از کدهای این پروژه را در یک مخزن (Repository) جدید کپی کرده و تغییرات مد نظر خود را در آن اعمال کنید. چون Forking به معنای انشعاب و یا چند شاخه شدن است، برای اشاره به این ویژگی از سایت گیت هاب از آن استفاده میکنند.
حتی اگر تغییراتی جدید در Repo اصلی ایجاد شود، این تغییرات در نسخه جدید Repo شما نیز اعمال میگردد. این ویژگی از سایت گیت هاب، نقش مهمی در توسعه نرم افزار و برنامه ها دارد. چون پیشرفت های بزرگ در دنیای برنامه نویسی، حاصل اقداماتی بوده که به تدریج در راستای بهبود پروژهها انجام گرفتهاند.
مطلب مرتبط: AMP چیست و چه تاثیری در توسعه نرم افزار دارد؟
۳- امکان Social Networking
ایجاد فضایی برای تبادل نظر سریع بین متخصصان یک حوزه، الزامی است که گیت هاب به خوبی آن را فراهم کرده است. این سایت با طیف گستردهای از علاقه مندان به برنامه نویسی طرف است که بعضی از آنها حرفه ای هستند و تعدادی دیگر تازه کار! به همین دلیل به کاربران خود اجازه میدهد تا یک شبکه اجتماعی از متخصصان یک حوزه را تشکیل دهند.
تمامی کدهای موجود در این سایت، در بستر دید عموم قرار دارند و برنامه نویسان میتوانند با یکدیگر همفکری کرده و ایدههای خود را به اشتراک بگذارند. این ویژگی نقش مهمی در پیشرفت پروژه های برنامهنویسی دارد.
۴- Pull Request
پس از انجام یک انشعاب از یک مخزن و اعمال تغییرات در Repo جدید، شاید لازم باشد که این تغییرات را به سازندگان اصلی برنامه اعلام کنید. اگر تغییرات شما جالب بوده و بتواند نظر آنها را جلب کند، امکان اضافه شدن شما به تیم اصلی این پروژه وجود خواهد داشت.
یعنی در اصل ویژگی Pull Request به شما کمک میکند تا توانایی های خود در برنامه نویسی را به تیم اصلی پروژه ثابت کنید. این کار باعث شناخته شدن شما میشود؛ چون همیشه کیفیت یک کار، میتواند گواهی بر توانایی های هر شخص در آن زمینه باشد.
۵- Branching
واژه Branching به معنای شاخه است. برنامه نویس میتواند با استفاده از ویژگی Branching، یک کپی از نسخه اصلی برنامه را ایجاد و تغییرات جدید را در آن پیادهسازی کند. کدهای جدید باید به برنامه افزوده شده و کارایی آنها بررسی شود. پس در هر مرحله از کار، نسخه اصلی برنامه محفوظ مانده و ایدههای جدید بر روی نسخه Branching آن اجرا میشود.
۶- Merging
اگر تیم اصلی پروژه پس از Branching و افزودن و یا کاستن کدهای جدید بخواهد این تغییرات را در برنامه اصلی ایجاد کند، از Merging استفاده میکند. واژه Merg به معنای ترکیب است و به اعمال تغییرات در کدهای اصلی برنامه اشاره دارد.
۷- Commit از ویژگی های برتر گیت هاب
یکی از قابلیت های گیت این بود که به مدیر اصلی پروژه اجازه میداد تا تغییرات ایجاد شده در هر مرحله و شخص تغییر دهنده را شناسایی کند. در گیت هاب، ویژگی Commit این امکان را به کاربران میدهد.
چون با هر تغییری در مخزن (Repository)، یک Commit جدید ایجاد میشود. این Commit ها در اصل اسنادی هستند که مسیر پروژه را نشان داده و به شما میگویند که تغییرات جدید در پروژه چه بوده و توسط چه افرادی انجام گرفته است.
مزایای گیت هاب چیست؟
۱- کمک به پیشرفت مهارت کدنویسی و برنامه نویسی
همیشه کارهای تیمی و منظم، زودتر به نتیجه می رسند. گیت هاب نیز بستری فراهم کرده تا فعالان حوزه برنامه نویسی بتوانند نظرات خود را با یکدیگر به اشتراک گذاشته و تعاملی سازنده داشته باشند.
این موضوع به بهبود مهارتها و توانایی افراد کمک میکند. مثلاً کاربران میتوانند از تجربههای یکدیگر استفاده کرده و پروژه کامل تری را ایجاد کنند. و یا از ویژگی Pull Request برای معرفی خود و گوشزد کردن ایرادات برنامه به برنامهنویس ها استفاده کنید.
۲- مدیریت آسان پروژه از مزایای گیت هاب
در یک پروژه برنامه نویسی، هر شخصی یک گوشه از کار را گرفته و کدهای مربوط به آن را مینویسد. اما تعداد این کدها یکی دوتا نیست که بتوان راحت آنها را از یکدیگر تفکیک و مدیریت کرد.
پس عملاً بدون استفاده از بستری همچون گیت هاب، نمیتوان یک پروژه بزرگ برنامه نویسی را پیش برد. با استفاده از فضای فراهم شده و ابزارهای موجود در گیت هاب، مدیر پروژه میتواند با توسعهدهندگان تبادل نظر داشته و از نظرات آنها استفاده کند. این قابلیت به پیشرفت پروژه و کاهش سختیهای کار کمک میکند.
۳- میزبانی مناسب برای کدهای برنامه نویسی
گیت هاب میزبانی مناسب برای نگهداری کدهای برنامه نویسی است. شرکت های بزرگ برنامه نویسی نیز برای نگهداری کدها و دسترسی کاربران اختصاصی خود، از این بستر استفاده میکنند. میلیونها Repo مختلف در گیت هاب وجود دارد و توسعه دهندگان به راحتی میتوانند از ابزارهای این سایت، برای میزبانی و انتشار کدهای خود استفاده کنند.
۴- حفظ امنیت کدها با استفاده از پکیج شخصی
خود سایت گیت هاب، ماهیتی متن باز دارد. یعنی هر کس که بخواهد، میتواند به کدهای این سایت دسترسی داشته و در صورت امکان آنها را تغییر دهد. اما این سایت میزبانی دست و دلباز است و تمامی کدهای برنامه نویسی موجود در سایت خود را در معرض دید عموم قرار میدهد. این کار با هدف پیشرفت در حوزه برنامه نویسی و تبادل نظر انجام میشود.
اما شاید شرکت های بزرگ قصد اجرای پروژه ای جدید را داشته باشند و بخواهند کدهای آنها خصوصی بماند. در چنین شرایطی باید از پکیج شخصی استفاده کرده و چنین کدهایی در فضایی ایمن و خصوصی نگهداری شوند. تنها افرادی اجازه دسترسی به کدهای موجود در یک Repo خصوصی را خواهند داشت که، شخص ایجاد کننده مجوز آنها را صادر کند.
۵- اجازه ندادن به کدهای مخرب
نگهداری از چنین حجم بزرگی از کدهای برنامه نویسی، امکانات سخت افزاری و نرم افزاری خاص خود را میطلبد. گیت هاب برای تشخیص کدهای مخرب، از ابزارها و برنامه های مختلفی استفاده میکند و به آنها اجازه ورود به سایت را نمیدهد. در غیر این صورت، هکرها میتوانند به راحتی بدافزارها را در داخل سایت تکثیر کرده و دست به خرابکاری بزنند.
مطلب مرتبط: جلوگیری از هک سایت
شرایط لازم برای استفاده از GitHub
تا به اینجای کار باید به اهمیت، نقش و مزایا گیت هاب، در نگهداری از کدهای برنامه نویسی پی برده باشید. اما برای استفاده از این بستر، باید ابتدا Git متناسب با سیستم عامل خود را دانلود کرده و بر اساس دستورالعمل ها، آن را نصب کنید. سپس باید به سایت گیت هاب رفته و یک حساب کاربری جدید برای خود بسازید.
توجه داشته باشید که حسابهای رایگان، محدودیت هایی در استفاده از ابزار و امکانات سایت دارند. اما برای شروع مناسب بوده و میتوان به مخزنهای عمومی و خصوصی دسترسی داشت.
برای ساخت اکانت در گیت هاب باید وارد سایت گیت هاب شوید. باید نام کاربری، رمز عبور و آدرس ایمیل را در کادر های مشخص شده وارد کرده و گزینه Create Account را بزنید.
حال برای ایجاد یک مخزن جدید و وارد کردن کدهای برنامه نویسی خود، دکمه Create a repository را انتخاب کنید. در این صفحه می توان Start Learning را کلیک کرده و نحوه کار با گیت هاب را یاد بگیرید.
آموزش کار با سایت گیت هاب
در قسمت های قبلی به معرفی و پاسخ سوال گیت هاب چیست پرداختیم. اما یکی از چالش های اصلی آموزش کار با سایت گیت هاب است. اگر قصد دارید با گیت هاب کار کنید، در ادامه ما آموزش کار با سایت گیت هاب را در بخش های متفاوتی برای شما ارائه داده ایم. این بخش ها عبارتند از:
- روش دانلود فایلها از گیت هاب (Download ZIP)
- روش ایجاد و مدیریت پروژه در گیت هاب (Managing Repos)
- روش ویرایش و ارتقا کد ها و پروژهها (Pull Requests)
روش دانلود فایل از گیت هاب
برای کار با سایت گیت هاب قبل از هرچیزی باید با روش دانلود فایل از این سایت آشنایی داشته باشید. اگر نیاز داشتید یکی از کدهایی که در صفحات عمومی گیت هاب قرار دارد را دانلود کنید، می توانید به روش زیر عمل کنید:
در تاپیک مربوط به هر پروژه ای، مسیری وجود دارد که بتوانید به راحتی کدهای مربوط به آن پروژه را به طور کامل دانلود کنید. برای این کار همانند تصویر زیر باید فایل پروژه را به صورت ZIP دانلود کنید. نکته قابل توجه این است که در گیت هاب، امکان راست کلیک و کپی کردن قسمتی از کد وجود ندارد و شما باید فایل کل پروژه را از روشی که گفتیم دانلود کنید.
کلام آخر
مطمئناً پس از مطالعه این مطلب، باید فهمیده باشید که گیت هاب چیست و چه نقشی در پیشرفت پروژه های برنامه نویسی دارد. استفاده از این پلتفرم جذاب، هیچ محدودیت سنی نداشته و هر شخصی با اندک اطلاعات در حوزه برنامه نویسی نیز میتواند از آن استفاده کند. ولی به دلیل تحریم های موجود، به یک فیلترشکن مناسب برای نصب و کار با آن نیاز داریم.
اما ویژگی های خاص این پلتفرم و مزایایی که به آنها اشاره کردیم، به قدری قابل توجه هستند که سختیهای این کار را به جان بخریم. در این مطلب از وبلاگ سرورپارس سعی کردیم تا با بیانی ساده به معرفی و بررسی مزایا گیت هاب بپردازیم. اگر در خصوص نحوه کار با این نرم افزار، سوال و یا ابهامی دارید، می توانید در بخش کامنت ها مطرح کنید.
مطلب مرتبط:
من خودم تجربه کار در پروژه گروهی رو در گیت هاب دارم و واقعا خیلی کاربردی هست. بغیر از گیت هاب چه پلتفرم های دیگه ای هست که با کارکرد مدیریت پروژه های برنامه نویسی ازش استفاده میشه؟ البته فک می کنم git hub از همه محبوب تر باشه