گیت هاب (GitHub) واژهای است که کموبیش در دنیای برنامهنویسی و یا طراحی سایت و افزونه میشنویم و شاید تاکنون کدها و یا برنامههایی را از آن دانلود کرده باشیم.
اولین کار برای درک هرچیز این است که یک تعریف کلی از آن داشته باشیم. برای گیت هاب تعاریف متعددی در سرتاسر وب وجود دارد. تعریف کاملی که ما خدمتتان ارائه میکنیم، ترکیبی از همه تعاریف قبلی است: گیت هاب یک شبکه اجتماعی در فضای ابری برای برنامهنویسان و یک پلتفرم همکاری برای توسعهدهندگان است که بزرگترین فضای ذخیرهسازی برای کارهای اشتراکی و توزیعیافته دنیا به شمار میرود. گیت هاب بهعنوان بزرگترین هاست برای میزبانی پروژههایی ایجاد شده که از سیستم کنترل ورژن گیت استفاده میکنند. به زبان سادهتر، گیت هاب یک سیستم مدیریت پروژه و نسخهبندیِ کد و همچنین یک شبکه اجتماعی برای توسعهدهندگان و برنامهنویسان است که بزرگترین منبع موجود برای ذخیرهسازی کارهایی است که بهصورت مشترک ایجاد شدهاند.
کلمه گیت هاب از دو قسمت تشکیل شده است. گیت (Git) و هاب (Hub) که باید برای یادگرفتن گیت هاب، هر دو جزء این کلمه را درک کنیم.
گیت چیست؟
گیت (Git) اولین بخش کلمه گیت هاب است. گیت یک سیستم کنترل ورژن منبع باز است که Linus Trovalds آن را ابداع کرده است. اما کنترل ورژن چیست؟ وقتی که برنامهنویسان (برای مثال) یک برنامه میسازند، پس از اولین نسخه منتشر شده تغییرات زیادی در کد انجام میدهند. کنترل ورژن این تغییرات را ساده میکند، و تمام اصلاحات را در یک انبار (repository) ذخیره میکند. این قابلیت به برنامهنویسان و همچنین اعضای تیم برنامهنویسی کمک میکند تا بهراحتی نسخه جدید نرمافزار را دانلود کرده، در آن تغییرات ایجاد کنند و آخرین بازبینی را دوباره بهروزرسانی کنند.
برای مثال پروژه عظیم وردپرس را در نظر بگیرید. اگر هر برنامهنویسی بخواهد بر روی بخشی از کد وردپرس کار کند، نمیتوان با اطمینان کامل منبع کد اصلی را در اختیار وی قرار داد تا هر تغییری که میخواهد اعمال کند. به جای آن، کنترل ورژن به توسعه دهندگان اجازه میدهد بر روی یک شاخهی موازی از پروژه کار کرده و سپس تغییرات را ادغام کنند.
از طرف دیگر، افرادی که اصلاً به توسعهی پروژه ارتباطی ندارند نیز میتوانند این فایلها را دانلود کرده و از آن استفاده کنند. از مزایای گیت نسبت به سایر روشهای کنترل ورژن این است که فایلهای تغییرات را با بهره بیشتر ذخیره میکند و از یکپارچگیِ فایل مطمئن میشود.
هاب چیست؟
بخش دوم کلمه گیت هاب، هاب (Hub) است. کلمهی هاب را ممکن است در جاهای دیگری هم شنیده باشید. معنیِ آن کم و بیش در تمام کلمات و عبارتها یکسان است. در حالت کلی، طبق تعریف فرهنگ لغت آکسفورد، بهصورت خلاصه هاب یعنی مرکز یک فعالیت، منطقه و یا یک شبکه. برای مثال USB Hub را در نظر بگیرید، در اینجا هاب یعنی یک مرکز برای ارتباطات USB. به عبارت دیگر مرکزی که تمام فعالیتها حول محور آن رخ میدهد. بنابراین، گیت هاب یعنی یک مرکز برای گیت، مکانی که تمام فعالیتهای مربوط به گیت حول محور آن رخ خواهد داد. همان تعریفی که در بالا برای گیت هاب ارائه کردیم.
مفاهیم مهم برای تعریف گیت هاب
Repository: معادل فارسیِ Repository را میتوان منبع یا انبار عنوان کرد که در گفتمان گیت هاب به صورت مخفف به آن Repo هم گفته میشود. همانطور که از معادل فارسیِ این مفهوم مشخص است، Repo مکانی است که تمام فایلهای یک پروژه در آن ذخیره میشود (مانند یک انبار برای آن پروژه). به عبارت دیگر هر پروژه دارای repo مربوط به خود است که با یک آدرس URL منحصربهفرد، قابل دسترسی است.
Fork: به فارسی میتوان Fork را معادل چنگال، شاخه و یا شعبه دانست. این کلمه بیشتر در حالت فعل به کار میرود، یعنی Forking، یا ایجاد یک شاخه یا انشعاب. همانند Repository، از مفهوم فارسیِ Fork نیز میتوان کاربرد آن را حدس زد. شاخه وقتی به کار میرود که میخواهید پروژهای را بر اساس یک پروژهی دیگر که از قبل موجود است ایجاد کنید. این ویژگی برای گیت هاب بسیار عالیست. با استفاده از این ویژگی میتوانید پروژهای را که از قبل وجود دارد، برای خود منشعب کنید و سپس تغییراتی در آن ایجاد کنید و در نهایت این پروژه را به عنوان یک repo و پروژه جدید منتشر سازید. اگر منبع اولیهای که از آن شاخه ایجاد کردهاید بهروزرسانی شود، این بهروزرسانیها را میتوانید بهراحتی به انشعاب خود اضافه کنید.
Branch: گاهی اوقات به جای Fork از Branch که معادل دقیق آن است استفاده میشود. Branch یا شاخه در واقع یک کپی از شاخه اصلی یا اورجینال است. این شاخهها برای اعمال تغییرات و اضافه کردن ویژگیهایی استفاده میشود که کاملاً از شاخه اورجینال مجزا است. پس از آماده شدن این تغییرات، میتوان آنها را با پروژه اصلی ادغام (Merge) کرد که با Pull Request انجام میشود.
Commit: به زبان ساده، هر تغییر یک Commit نامیده میشود که هر یک از آنها شامل یک توصیف برای علت ایجاد این تغییر است.
Pull Request: معادل فارسی برای این مفهوم را میتوان «درخواست ادغام یا یکپارچگی» تعریف کرد. این درخواست زمانی به کار میرود که شما تغییراتی در یک پروژه (منشعب شده) انجام دادهاید، ولی میخواهید این تغییرات توسط برنامهنویسان اصلی شناخته شده و در پروژه (repo) اولیه قرار بگیرد. برای اینکار میتوانید یک Pull Request ایجاد کنید. در این صورت برنامهنویسان اصلی تغییرات شما را خواهند دید و در صورت صلاحدید این تغییرات شما را در پروژه اصلی قبول میکنند.
جنبههای شبکه اجتماعی: از دیگر جنبهها و مفاهیم مهمی که گیت هاب دارد امکانات شبکه اجتماعی است که میتوان آن را یکی از قدرتمندترین ویژگیهای آن دانست. هر کاربر در گیت هاب یک پروفایل و یک رزومه مخصوص به خودش دارد که آثار پیشین و همکاریهایی را که توسط درخواستهای ادغام انجام داده است، نشان میدهد. بازبینی در پروژهها را میتوان بهصورت عمومی مورد بحث قرار داد و بسیاری از ویژگیهای دیگری که میتوانیم بهوسیله آن از این جنبههای همکارانه و اجتماعی بهرهمند شویم.
سوابق تغییرات: از قابلیتهای دیگر گیت هاب این است که سوابق کاملی از تغییرات پروژه را حفظ میکند. با این امکانات و ویژگیها دیگر برنامهنویسان نباید نگران این باشند که چه کسی چه چیزی را تغییر داد، چه زمانی این تغییر اعمال شد و آخرین فایلها کجا ذخیره شدهاند. گیت هاب تمام این کارها را انجام میدهد.
سایر کاربردهای گیت هاب
جالب است بدانید که گیت هاب تنها مختص به برنامهنویسان و توسعهدهندگان نیست. هر کسی که میخواهد پروژه خود را بهصورتی بهینه مدیریت کند و بهطور اشتراکی با سایر اعضای تیمش کار کند، میتواند از گیت هاب استفاده کند.
برای مثال اگر تیم شما روی پروژه ترجمه یک کتاب کار میکند که نیازمند بهروزرسانیهای مداومی در روند کار است، میتوانید از گیت هاب استفاده کنید. این ابزار سوابق تغییرات را حفظ و ذخیره میکند و حتی به شما نشان میدهد که چه کسی این تغییرات را انجام داده است.
طرحهای رایگان و پولی گیت هاب
گیت هاب هم مانند بسیاری از وبسایتهای ارائه خدمات آنلاین، دارای طرحهای رایگان و پولی است. در حالت کلی، طرحهای گیت هاب به دو گروه فردی و تیمی تقسیم میشود. در طرحهای فردی، دو حالت رایگان و حرفهای (Pro) وجود دارد. یکی از مهمترین ویژگیهای طرحهای رایگان عدم محدودیت زمانی است! یعنی میتوانید یک اکانت رایگان ایجاد کنید و برای همیشه دارای Repoهای نامحدود عمومی و خصوصی باشید، پروژهها را مدیریت کنید و مشکلات و باگها را ردیابی کنید. این طرح برای اکثر کاربران مناسب است.
اما طرحهای پولی که در حال حاضر هزینه آن برای پلان حرفهای از 7 دلار برای هر ماه آغاز میشود، دارای امکانات بیشتری هستند؛ مثل همکاران نامحدود (در حالت رایگان حداکثر ۳ همکار میتواند وجود داشته باشد)، ایجاد ویکیها، شاخههای محافظتشده، گرافها و نمودارهای مختلف برای اطلاعات و آمار انبارها و …
پلانهای تیمی که دارای امکانات بیشتری مثل کنترل دسترسیِ تیمی، صدور قبض و مدیریت کاربران هستند از 9 دلار قیمتگذاری شدهاند.
گیتهاب فقط برای برنامهنویسان نیست!
نکتهی جالبتوجه اینجاست که تنها این توسعهدهندگانِ وب نیستند که از سیستم گیتهاب استفاده میکنند. هر تیمی که در حال اعمال تغییرات بر روی پروژهای است میتواند با امکاناتی که گیتهاب در اختیارش میگذارد به پیشروی پروژهی خود کمک کند. اگر در تیم خود، دائماً در فایلهای ورد خود تغییر ایجاد میکنید، میتوانید از گیتهاب بهعنوان سیستم کنترل ورژن استفاده کنید. البته این راهکار چندان هم رایج نیست؛ چراکه در اغلب مواقع جایگزینهای بهتری هم وجود دارند، اما بهتر است که گیتهاب را هم به خاطر بسپرید.