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