گیت هاب (یا GitHub) واژه‌ای است که کم و بیش در دنیای برنامه‌نویسی و یا حتی طراحی سایت و افزونه می‌شنویم و شاید تاکنون کدها و یا برنامه‌هایی را از آن دانلود کرده باشیم. اما گیت هاب چیست؟ در این مطلب هرآنچه باید در مورد گیت هاب بدانید را به زبان ساده آماده کرده‌ایم تا یک بار برای همیشه گیت هاب را یاد بگیریم.

گیت هاب چیست؟

اولین کار برای درک هر چیز این است که یک تعریف کلی از آن داشته باشیم. برای گیت هاب تعاریف متعددی در سرتاسر وب وجود دارد. تعریف گیت هاب در اینجا تجمیع و ترکیبی از تعاریف موجود در منابع مختلف است: گیت هاب یک شبکه‌ی اجتماعی در فضای ابری برای برنامه‌نویسان و یک پلتفورم همکاری برای توسعه‌دهندگان است که بزرگ‌ترین فضای ذخیره‌سازی برای کارهای همکارانه و توزیع‌یافته دنیا به شمار می‌رود. در این سرویس میزبانی وب، پروژه‌هایی قرار دارند که از سیستم کنترل ورژن گیت استفاده می‌کنند. به زبان ساده‌تر، گیت هاب یک سیستم مدیریت پروژه و نسخه‌بندیِ کد و همچنین یک شبکه‌ی اجتماعی برای توسعه دهندگان و برنامه‌نویسان است که بزرگ‌ترین منبع موجود برای ذخیره‌سازی کارهایی است که به صورت همکارانه ایجاد شده‌اند.

کلمه‌ی گیت هاب از دو قسمت تشکیل شده است. گیت (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: معادل فارسی برای این مفهوم را می‌توان «درخواست ادغام یا یکپارچگی» قرار داد. این درخواست زمانی به کار می‌رود که شما تغییراتی در یک پرژه (منشعب شده) انجام داده‌اید، ولی می‌خواهید این تغییرات توسط برنامه‌نویسان اصلی شناخته شده و در پروژه (یا repo) اولیه قرار بگیرد. برای اینکار می‌توانید یک Pull Request ایجاد کنید. در این صورت برنامه‌نویسان اصلی تغییرات شما را خواهند دید و در صورت صلاحدید این تغییرات شما را در پروژه‌ی اصلی قبول می‌کنند.

جنبه‌های شبکه‌ی اجتماعی: از دیگر جنبه‌ها و مفاهیم مهمی که گیت هاب دارد امکانات شبکه‌ی اجتماعی است که می‌توان آن را یکی از قدرتمندترین ویژگی‌های آن دانست. هر کاربر در گیت هاب یک پروفایل داشته و یک رزومه برای وی وجود دارد، که آثار پیشین و همکاری‌هایی که توسط درخواست‌های ادغام انجام داده است را نشان می‌دهد. بازبینی در پروژه را می‌توان به صورت عمومی مورد بحث قرار داد و بسیاری از ویژگی‌های دیگری که می‌توان از این جنبه‌های همکارانه و اجتماعی بهره‌مند شد.

سوابق تغییرات: از قابلیت‌های دیگر گیت هاب این است که سوابق کاملی از تغییرات پروژه را حفظ می‌کند. با این امکانات و ویژگی‌ها دیگر برنامه‌نویسان نباید نگران این باشند که چه کسی چه چیزی را تغییر داد، چه زمانی این تغییر اعمال شد و آخرین فایل‌ها کجا ذخیره شده‌اند. گیت هاب تمام این کارها را انجام می‌دهد.

کار با گیت هاب

مثالی از نحوه استفاده از گیت هاب

برای درک بهتر تعریف گیت هاب که در بالا به آن اشاره شد، به یک مثال برای نحوه‌ی کار گیت هاب توجه کنید: چهار برنامه‌نویس به نام‌های سام، داوود، ملینا و مایک را در نظر بگیرید که بر روی نرم‌افزارهای هوشمند کشاورزی و به ویژه تراکتورهای هوشمند کار می‌کنند. همه‌ی این برنامه‌نویس‌ها بر روی پروژه‌های مشترک کار می‌کنند، اما محل زندگیِ آن‌ها از هم دور است. یک نفر دیگر، ادیب را نیز مد نظر داشته باشید که با یک تراکتور پیشرفته و پُر از سنسور و پردازنده کار می‌کند. ادیب یک ایده در سر دارد، که با استفاده از آن کشاورزان می‌توانند داده‌های خود را به اشتراک گذاشته و برداشت‌هایشان را بهبود دهند.

برای این کار، ادیب در سایت گیت هاب یک موضوع (Issue) ایجاد می‌کند، امکانی که توسط آن کاربران می‌توانند گزارش باگ، درخواست ویژگی، پرسش‌های متنوع و یا بحث‌های کلی را در سایت گیت هاب ایجاد کنند. سام اولین کسی است که این موضوع را در سایت می‌بیند، و برای آغاز این کار داوود را مناسب می‌بیند و وی را در آن موضوع فرا می‌خواند. داوود کار پروژه را بر روی یک تراکتور شروع و آن را تست می‌کند. برای این کار یک شاخه (Branch) از کد ایجاد کرده و روی آن کار می‌کند. در طول فرآیند کار، گیت هاب تاریخچه‌ی تغییرات داوود را ذخیره می‌کند. پس از اینکه داوود کار خود را به اتمام رساند، یک درخواست Pull (یا Pull Request) ایجاد کرده و برای آن درخواست نظرخواهی می‌کند. سپس هم‌تیمی‌های داوود تغییرات را بررسی کرده و در صورت امکان آن‌ها را بهبود می‌دهند. البته ناگفته نماند که در این فرآیند تمام اعضای تیم یک نسخه از برنامه و تغییرات را دارند، پس اگر تغییر و پیشنهادی از سایر اعضای تیم وجود داشته باشد، می‌توانند به راحتی این تغییرات را در این شاخه اعمال کنند، که تمام این تغییرات و درخواست‌های Pull به صورت تاریخچه‌وار در گیت هاب ذخیره می‌شوند.

پس از اتمام تغییرات و تأیید نهایی تمام اعضای تیم، داوود این درخواست Pull، یا تغییرات را بر روی پروژه‌ی پیشین به اصطلاح Merge یا ادغام می‌کند. پس از ادغام این ویژگی در اختیار همه قرار خواهد گرفت و تمام کشاورزان می‌توانند از این ایده‌ی ادیب لذت ببرند.

سایر کاربردهای گیت هاب

گیت هاب تنها مختص به برنامه‌نویسان و توسعه دهندگان نیست. هر کسی که می‌خواهد پروژه‌ی خود را به صورتی بهینه مدیریت کرده و به صورت همکارانه بر روی یک پروژه با سایر اعضای تیم خود کار کند، می‌تواند از گیت هاب استفاده کند.

برای مثال اگر تیم شما بر روی یک پروژه ترجمه یک کتاب کار می‌کند و نیازمند به روزرسانی‌های مداومی در روند کار بوده و می‌خواهد سوابق این تغییرات را حفظ و ذخیره کند (و بداند چه کسی چه کاری انجام داده است)، گیت هاب یک ابزار مناسبی است.

گیت هاب ملی پیامک

با توجه به تعاریف فوق و مزایایی که برای گیت هاب از منابع متعدد اظهار کردیم، خالی از لطف نیست که بگوییم سامانه ملی پیامک نیز دارای یک انبار منحصر به فرد برای پروژه‌های خود در گیت هاب است. در این Repo، نمونه کدهای وب سرویس اس ام اس (SMS) برای سامانه ملی پیامک قرار داده شده و برای استفاده و همکاری آماده هستند.

گیت هاب نمونه کد های ملی پیامک

همانطور که اشاره شد، هر انبار در گیت هاب دارای یک آدرس دسترسیِ URL منحصر به فرد است. برای دسترسی به گیت هاب ملی پیامک می‌توانید از آدرس زیر استفاده کنید:

https://github.com/melipayamak

طرح‌های رایگان و پولی گیت هاب

گیت هاب نیز مانند بسیاری از وبسایت‌های ارائه‌ی خدمات آنلاین دیگر دارای طرح‌های رایگان و پولی است. در حالت کلی، طرح‌های گیت هاب به دو گروه فردی و تیمی تقسیم بندی شده است. در طرح‌های قردی، دو حالت رایگان و حرفه‌ای (Pro) وجود دارد. یکی از مهم‌ترین ویژگی‌هایی که برای طرح رایگان وجود دارد این است که این طرح دارای محدودیت زمانی نیست! یعنی می‌توانید یک اکانت رایگان ایجاد کرده و برای همیشه به صورت نامحدود دارای Repoهای نامحدود عمومی و خصوصی باشید، پروژه‌ها را مدیریت کنید، و مشکلات و باگ‌ها را ردیابی کنید که برای اکثر کاربران می‌تواند طرح مناسبی باشد.

اما در طرح‌های پولی که در حال حاضر هزینه‌ی آن برای پلان حرفه‌ای از 7 دلار برای هر ماه آغاز می‌شود دارای امکانات بیشتری نظیر همکاران نامحدود (در حالت رایگان حداکثر 3 همکار می‌توان وجود داشته باشد)، ایجاد ویکی‌ها، شاخه‌های محافظت شده، گراف‌ها و نمودارهای مختلف برای اطلاعات و آمار انبارها و غیره است.

پلان‌های تیمی که دارای امکانات بیشتری نظیر کنترل دسترسیِ تیمی و صدور قبض و مدیریت کاربران است از 9 دلار شروع می‌شود و پلان شرکتی، یعنی آخرین و بالاترین پلان در حال حاضر بدون قیمت بوده و نیازمند تماس با گیت هاب است. گیت هاب دارای یک صفحه وب برای مقایسه ویژگی‌ها و امکانات پلان‌های مختلف است که از همان صفحه اول در دسترس است.

گیت هاب (یا GitHub) واژه‌ای است که کم و بیش در دنیای برنامه‌نویسی و یا حتی طراحی سایت و افزونه می‌شنویم و شاید تاکنون کدها و یا برنامه‌هایی را از آن دانلود کرده باشیم. اما گیت هاب چیست؟ در این مطلب هرآنچه باید در مورد گیت هاب بدانید را به زبان ساده آماده کرده‌ایم تا یک بار برای همیشه گیت هاب را یاد بگیریم.

 

به دنبال رشد کسب و کارتان هستید؟ ملی‌پیامک به شما امکان جذب، نگهداری و تعامل با مشتری را می دهد.
مشاهده تعرفه‌ها 3 روز تست رایگان
بحث درباره این مقاله را شما آغاز کنید! ارسال دیدگاه

تیم تحریریه ملی پیامک

هر آنچه در ملی پیامک می خوانید، حاصل یک کوشش تیمی است؛ کوششی در جهت یافتن درست‌ترین پاسخ به مسائل و انتقال آن به شما. ما امیدواریم تلاش‌های مجموعه ما بتواند تاثیری هر چند کوچک در بهبود کیفیت فضای دیجیتال ایران داشته باشد.
درباره تیم ما بیشتر بدانید