گیت هاب (GitHub) واژهایست که کموبیش در دنیای برنامهنویسی، طراحی سایت و افزونهها میشنویم. شاید تاکنون کدها یا برنامههایی را گیت هاب دانلود کرده باشیم. اما گیت هاب چیست؟
در این مطلب هرآنچه باید در این مورد بدانید را به زبان ساده آماده کردهایم تا یک بار برای همیشه اطلاعات مرتبط با این منبع کاربردی برنامهنویسان را یاد بگیریم.
گیت هاب چیست؟
برای گیت هاب تعاریف متعددی در سرتاسر وب وجود دارد. گیت هاب یک "شبکه اجتماعی در فضای ابری برای برنامهنویسان و یک پلتفرم همکاری برای توسعهدهندگان است که بزرگترین فضای ذخیرهسازی برای کارهای اشتراکی و توزیعیافته دنیا" به شمار میرود.
گیت هاب به عنوان بزرگترین هاست برای میزبانی پروژههایی ایجاد شده که از سیستم کنترل ورژن گیت استفاده میکنند. به زبان سادهتر، گیت هاب یک سیستم مدیریت پروژه، نسخهبندیِ کد و همچنین یک شبکه اجتماعی برای توسعهدهندگان و برنامهنویسان است که بزرگترین منبع موجود برای ذخیرهسازی کارهایی است که بهصورت مشترک ایجاد شدهاند.
کلمه گیت هاب از دو قسمت تشکیل شده است. گیت (Git) و هاب (Hub) که باید برای یادگرفتن گیت هاب، هر دو جزء این کلمه را درک کنیم. پس از آن لیست واژگان و مفاهیم مهمی را که برای تعریف کامل گیت هاب به زبان ساده نیاز داریم، ارائه میکنیم.
گیت چیست؟
گیت (Git) سیستم کنترل ورژن منبع باز است که Linus Trovalds آن را ابداع کرده است. اما کنترل ورژن چیست؟
مثلاً وقتی که برنامهنویسان یک برنامه میسازند، پس از اولین نسخه منتشر شده تغییرات زیادی در کد انجام میدهند. کنترل ورژن این تغییرات را ساده میکند و تمام اصلاحات را در یک انبار (repository) ذخیره میکند. این قابلیت به برنامهنویسان و همچنین اعضای تیم برنامهنویسی کمک میکند تا بهراحتی نسخه جدید نرمافزار را دانلود کرده، در آن تغییرات ایجاد کنند و بعد از آخرین بازبینی آن را دوباره بهروزرسانی کنند.
کنترل ورژن کار را ساده میکند!
برای مثال پروژه عظیم وردپرس را در نظر بگیرید. اگر هر برنامهنویسی بخواهد بر روی بخشی از کد وردپرس کار کند، نمیتوان با اطمینان کامل منبع کد اصلیِ رسمی را در اختیار وی قرار داد تا هر تغییری که میخواهد اعمال کند. به جای آن، کنترل ورژن به توسعه دهندگان اجازه میدهد بر روی یک شاخهی موازی از پروژه کار کرده و سپس تغییرات را ادغام کنند (که در ادامه در مورد آن توضیح داده شده است).
از طرف دیگر، افرادی که اصلاً به توسعهی پروژه ارتباطی ندارند نیز میتوانند این فایلها را دانلود کرده و از آن استفاده کنند. از مزایای گیت نسبت به سایر روشهای کنترل ورژن این است که فایلهای تغییرات را با بهره بیشتر ذخیره میکند و از یکپارچگیِ فایل مطمئن میشود.
هاب چیست؟
کلمۀ هاب را ممکن است در جاهای دیگری هم شنیده باشید که معنیِ آن کم و بیش در تمام کلمات و عبارتها یکسان است. در حالت کلی، طبق تعریف فرهنگ لغت آکسفورد، بهصورت خلاصه هاب مرکز یک فعالیت، منطقه و یا یک شبکه است. برای مثال USB Hub را در نظر بگیرید، در اینجا هاب مرکزی برای ارتباطات USB و مکانیست که تمام فعالیتهای مربوط به گیت حول محور آن رخ خواهد داد.
مفاهیم مهم برای تعریف گیت هاب
در ادامه، بعضی از مفاهیم مهم را که برای پاسخ به گیت هاب چیست با آن روبرو میشویم، ارائه کردهایم. در واقع این مفاهیم هستند که گیت هاب را اینقدر خاص و محبوب کردهاند.
Repository چیست؟
معادل فارسیِ Repository را میتوان منبع یا انبار عنوان کرد که به صورت مخفف به آن Repo هم گفته میشود. همانطور که از معادل فارسیِ این مفهوم مشخص است، Repo مکانیست که مانند یک انبار تمام فایلهای یک پروژه در آن ذخیره میشود. به عبارت دیگر هر پروژه دارای repo مربوط به خود است که با یک آدرس URL منحصربهفرد، قابل دسترسی است.
Fork چیست؟
به فارسی میتوان Fork را معادل چنگال، شاخه یا شعبه دانست. شاخه وقتی به کار میرود که میخواهید پروژهای را بر اساس یک پروژۀ دیگر که از قبل موجود است، بسازید.
با استفاده از این ویژگی میتوانید پروژهای را که از قبل وجود دارد، برای خود منشعب کنید (Repo آن را برای خود دریافت کنید)، تغییراتی در آن ایجاد کنید و در نهایت این پروژه را به عنوان یک repo و پروژه جدید منتشر سازید. اگر منبع اولیهای که از آن شاخه ساختید، بهروزرسانی شود، این آپدیت را میتوانید به راحتی به انشعاب خود اضافه کنید.
Branch چیست؟
Branch یا شاخه در واقع یک کپی از شاخه اصلی یا اورجینال است. این شاخهها برای اعمال تغییرات و اضافه کردن ویژگیهایی استفاده میشود که کاملاً از شاخه اورجینال مجزا است. پس از آماده شدن این تغییرات، میتوان آنها را با پروژه اصلی ادغام (Merge) کرد که با Pull Request انجام میشود.
حتما بخوانید: مسابقه اینستاگرامی ملی پیامک : جایزه یک عدد آیفون 6Commit
به زبان ساده، هر تغییر یک Commit نامیده میشود که هر یک از آنها شامل یک توصیف برای علت ایجاد این تغییر است.
Pull Request چیست؟
معادل فارسی برای این مفهوم را میتوان «درخواست ادغام یا یکپارچگی» تعریف کرد. این درخواست زمانی به کار میرود که شما تغییراتی در یک پروژه (منشعب شده) انجام دادهاید، ولی میخواهید این تغییرات توسط برنامهنویسان اصلی شناخته شده و در پروژه (repo) اولیه قرار بگیرد.
برای اینکار میتوانید یک Pull Request ایجاد کنید. در این صورت برنامهنویسان اصلی تغییرات شما را خواهند دید و در صورت صلاح دید این تغییرات شما را در پروژه اصلی قبول میکنند.
شبکه اجتماعی و سوابق تغییرات
از دیگر جنبهها و مفاهیم مهمی که گیت هاب دارد، امکانات شبکه اجتماعی است که میتوان آن را یکی از قدرتمندترین ویژگیهای آن دانست. هر کاربر در گیت هاب یک پروفایل و یک رزومه مخصوص به خودش دارد که آثار پیشین و همکاریهایی را که توسط درخواستهای ادغام انجام داده است، نشان میدهد.
از قابلیتهای دیگر گیت هاب این است که سوابق کاملی از تغییرات پروژه را حفظ میکند. با این امکانات و ویژگیها دیگر برنامهنویسان نباید نگران این باشند که چه کسی چه چیزی را تغییر داد، چه زمانی این تغییر اعمال شد و آخرین فایلها کجا ذخیره شدهاند، چون گیت هاب تمام این کارها را انجام میدهد.
استفاده از گیت هاب؟
برای درک بهتر تعریف گیت هاب که در بالا به آن اشاره کردیم، به مثال زیر توجه کنید:
چهار برنامهنویس به نامهای سام، داوود، ملینا و مایک را در نظر بگیرید که روی پروژههای مشترک دربارۀ نرمافزارهای هوشمند کشاورزی و بهویژه تراکتورهای هوشمند کار میکنند، اما محل زندگیِ آنها از هم دور است. یک نفر دیگر، ادیب را نیز در نظر داشته باشید که با یک تراکتور پیشرفته و پُر از سنسور و پردازنده کار میکند. ادیب یک ایده در سر دارد، که با استفاده از آن کشاورزان میتوانند دادههای خود را به اشتراک گذاشته و برداشتهایشان را بهبود دهند.
برای این کار، ادیب در سایت گیت هاب یک موضوع (Issue) ایجاد میکند، یعنی امکانی که توسط آن کاربران میتوانند گزارش باگ، درخواست ویژگی، پرسشهای متنوع یا بحثهای کلی را در سایت گیت هاب ایجاد کنند.
شروع پروژه
سام اولین کسیست که این موضوع را در سایت میبیند، برای آغاز این کار داوود را مناسب میبیند و او را در آن موضوع فرا میخواند. داوود کار پروژه را روی یک تراکتور شروع کرده و آن را تست میکند. برای این کار یک شاخه (Branch) از کد ایجاد کرده و روی آن کار میکند. در طول فرآیند کار، گیت هاب تاریخچه تغییرات داوود را ذخیره میکند. پس از اینکه داوود کار خود را به اتمام رساند، یک درخواست Pull (یا Pull Request) ایجاد کرده و برای آن درخواست نظرخواهی میکند. سپس همتیمیهای داوود تغییرات را بررسی کرده و در صورت امکان آنها را بهبود میدهند. البته ناگفته نماند که در این فرآیند تمام اعضای تیم یک نسخه از برنامه و تغییرات را دارند، پس اگر تغییر و پیشنهادی از سایر اعضای تیم وجود داشته باشد، میتوانند بهراحتی این تغییرات را در این شاخه اعمال کنند، که تمام این تغییرات و درخواستهای Pull به صورت تاریخچهوار در گیت هاب ذخیره میشوند.
پس از اتمام تغییرات و تأیید نهایی تمام اعضای تیم، داوود این درخواست یا تغییرات را روی پروژه پیشین به اصطلاح Merge یا ادغام میکند. پس از ادغام این ویژگی در اختیار همه قرار میگیرد و تمام کشاورزان میتوانند از این ایده ادیب لذت ببرند.
سایر کاربردهای گیت هاب
جالب است بدانید که گیت هاب تنها مختص به برنامهنویسان و توسعهدهندگان نیست. هر کسی که میخواهد پروژه خود را بهصورتی بهینه مدیریت کند و اشتراکی با سایر اعضای تیمش کار کند، میتواند از گیت هاب استفاده کند.
برای مثال اگر تیم شما روی پروژه ترجمۀ کتاب کار میکند که نیازمند بهروزرسانیهای مداوم در روند کار است، میتوانید از گیت هاب استفاده کنید. این ابزار سوابق تغییرات را حفظ و ذخیره میکند و حتی به شما نشان میدهد که چه کسی این تغییرات را انجام داده است.
طرحهای رایگان و پولی
گیت هاب هم مانند بسیاری از وبسایتهای ارائه خدمات آنلاین، دارای طرحهای رایگان و پولی است. در حالت کلی، طرحهای گیت هاب به دو گروه فردی و تیمی تقسیم میشود.
طرحهای فردی
در طرحهای فردی، دو حالت رایگان و حرفهای (Pro) وجود دارد. یکی از مهمترین ویژگیهای طرحهای رایگان عدم محدودیت زمانی است! یعنی میتوانید یک اکانت رایگان ایجاد کنید و برای همیشه دارای Repoهای نامحدود عمومی و خصوصی باشید، پروژهها را مدیریت کنید و مشکلات و باگها را ردیابی کنید. این طرح برای اکثر کاربران مناسب است.
طرحهای پولی
اما طرحهای پولی که در حال حاضر هزینه آن برای پلان حرفهای از 7 دلار برای هر ماه آغاز میشود، دارای امکانات بیشتری هستند. همکاران نامحدود (در حالت رایگان حداکثر 3 همکار میتواند وجود داشته باشد)، ایجاد ویکیها، شاخههای محافظتشده، گرافها و نمودارهای مختلف برای اطلاعات و آمار انبارها و ... از ویژگیهای طرحهای پولیست.
حتما بخوانید: راهنمای استفاده از مترجم گوگلپلانهای تیمی که دارای امکانات بیشتری مثل کنترل دسترسیِ تیمی، صدور قبض و مدیریت کاربران هستند از 9 دلار قیمتگذاری شدهاند. پلان شرکتی، یعنی آخرین و بالاترین پلان در حال حاضر بدون قیمت بوده و نیازمند تماس با گیت هاب است. گیت هاب دارای یک صفحه وب برای مقایسه ویژگیها و امکانات پلانهای مختلف است که از همان صفحه اول در دسترس است.
گیت هاب ملی پیامک
حالا که با مزایا و امکانات فوقالعاده گیت هاب آشنا شدید، خالی از لطف نیست که بدانید سامانه ملی پیامک هم دارای یک انبار منحصربهفرد برای پروژههایش در گیت هاب است. شما با ثبتنام و خرید پنلهای ارسال اساماس ملیپیامک میتوانید کسبوکارتان را به سامانه ارسال اتوماتیک پیامک مجهز کنید. همچنین میتوانید نگاهی هم به نمونه کدهای وب سرویس اس ام اس (SMS) برای سامانه ملی پیامک بیندازید.
در این مورد حتی اگر یک سوال گوشه ذهنتان را قلقلک میدهد، تردید نکنید و همین حالا تلفن را بردارید و با شماره 02163404 تماس بگیرید تا بچههای ملیپیامک با کمال میل راهنماییتان کنند.
روحي نوري
عالي،بسيار مفيد،و….
لیلی
مرسی عالی بود :*
زهره تاجیک
درود بر شما،
خوشحالیم که از مطلب استفاده کردید. امیدواریم موفق و پیروز باشید.
احمد
سلام.
تا جایی که فهمیدم کار forke یعنی اینکه بخوایم یه پروژه جدید بسازیم منتهی اینکه کد های اولیمان را از یه پروژه دیگه می گیریم.
branche هم یعنی پروژه دیگری اصلاح ، اضافه و… بکنیم.
درست گفتم؟
مونا هادی
سلام دوست عزیز
بله درسته، اما به خاطر داشته باشین که forke یکی از خاصیتهای گیتهاب هستش!
امیرحسین
مفید و مختصر
نصیری
توضیحات بسیار عالی بود،متشکرم!
احمد
توضیحات عالی بود؛ ممنون از محتوای مفید فارسی که برای فارسی زبانان تولید نموده اید
سپاس و آرزوی موفقیت روز افزون
محمدرضامرادی
عالی بود.
مهدی جد
شما عالی هستید
متشکرم
امید امامی
خیلی عالی.ممنون
فرزاد
عالی بود، ممنون از لطفتون.
یوسف
باسلام
ممنون استفاده کردم توضیحات کاملی بود
حمید
سلام ممنون از اطلاعات مفیدتون
من برای نوشتن بخشی پایان نامه دکتری نیاز به کد نویسی دارم میخواستم بدونم از این سایت امکان دانلود یک کد کامل در یک موضوع خاص و تخصصی رو میده یا فقط یک شبکه اجتماعی جهت تکمیل کد های به اشتراک گذاشته شده است؟ ممنون از شما
نیلوفر اکبریان
سلام دوست عزیز، با 02163404 تماس بگیرین و با تیم پشتبانی صحبت کنین تا راهنماییتون کنن
شیما
سلام آیا کمپانی ai trade گیت هاب دارد؟
نیلوفر اکبریان
سلام، بله گیت هاب دارد
KHADIJEH
سلام
من امشب به طور اتفاقی github. com و دیدم و اومدم ببینم چیه
که توضیحات شما برا من که هیچ اطلاعاتی ندارم، جالب و مفید بود
ممنون
زهرا جوادی
خوشحالیم که تونستیم کمکتون کنیم.