Git رایجترین برنامهای است که امروزه برای به اشتراکگذاری نرمافزار استفاده میشود و گیت هاب یکی از بزرگترین ابزارها برای میزبانی مخازن git در اینترنت است. با استفاده از پلتفرم گیت هاب میتوانید مخازن git خود را در این وب سایت آپلود کنید تا کد شما در دسترس سایر کاربران در نقاط مختلف جهان قرار گیرد. با آشنایی با گیت هاب شما میتوانید در فرآیند کدنویسی با سایر توسعهدهندگان نرمافزار همکاری کنید. همچنین اگر با نحوه کار گیت هاب آشنایی کافی داشته باشید، میتوانید یک پروژه را در گیت هاب دنبال کنید و حتی پروژههای بلاکچین را که ممکن است بخواهید در آن مشارکت کنید، بررسی نمایید. در این مطلب ضمن اینکه خواهید فهمید github چیست، با نحوه استفاده از GitHub برای ایجاد، مدیریت و انتشار محتوا نیز آشنا خواهید شد. با ما همراه باشید.
گیت هاب چیست؟
آیا تابهحال اصطلاح نرمافزارهای اپن سورس (Open Source) یا متن باز را شنیدهاید؟ نرمافزار متن باز، کدی است که توسط توسعهدهندگان ساخته شده است و به صورت رایگان برای دانلود، تغییر و استفاده در پروژههای دیگر در دسترس دیگر کاربران در سراسر جهان قرار گرفته باشد. GitHub بزرگترین میزبان نرمافزار متن باز در وب است که میتوانید از کدهای موجود در آن استفاده کرده و به بهبود آنها کمک کنید.
گیت هاب (GitHub) یک وب سایت و سرویس مبتنی بر فضای ابری است که به توسعهدهندگان کمک میکند تا کد خود را ذخیره و مدیریت کنند و همچنین تغییرات کد خود را ردیابی و کنترل نمایند. برای درک دقیق نحوه کار GitHub، باید با دو عنصر کلیدی آشنا باشید:
- کنترل نسخه Version control
- گیت Git
در ادامه این دو اصل را توضیح خواهیم داد. سپس، در مورد نحوه استفاده از GitHub برای کار با WordPress صحبت خواهیم کرد.
Git چیست؟
Git یک سیستم منبع باز توزیع شده با امکان کنترل نسخ است که در سال ۲۰۰۵ توسط لینوس توروالدز ایجاد شد. با استفاده از git کل پایگاه کد و تاریخچه تغییرات آن در دسترس است. شما پس از اعمال تغییرات در پایگاه کد، از git برای ذخیره ساختار فایل (commits) استفاده میکنید. در نتیجه git، امکان انشعاب و ادغام آسان پایگاه کدها را فراهم میکند. با استفاده از Git کنترل نسخ و همکاری بین افراد و تیمها بسیار آسانتر میشود. براساس نظرسنجی توسعهدهندگان Stack Overflow ، بیش از ۸۷ درصد از توسعهدهندگان از Git استفاده میکنند.
کنترل نسخ (Version control) چیست؟
کنترل نسخههای کد، دقیقا کاری شبیه به ذخیره و save مراحل یک بازی است. برای مثال فرض کنید شما بازی را قبل از ورود به مرحله نهایی ذخیره کردهاید ولی به دلیل اینکه امتیازات لازم را در مراحل قبل جمعآوری نکردهاید، نمی توانید موفق شوید. برای رفع این مشکل میتوانید به نسخه ذخیره شده بازی خود در مراحل قبل برگردید و مراحل را برای جمعآوری امتیازات لازم دوباره طی کنید. به شرط اینکه برای ذخیره هر مرحله یک کپی جداگانه از بازی ایجاد کرده باشید.
با گسترش یک پروژه نرمافزاری، دسترسی به ورژنها ضروری میشود. ویژگی کنترل نسخهها به توسعهدهندگان کمک میکند تا تغییرات کد یک پروژه نرمافزاری را ردیابی و مدیریت کنند. کنترل نسخه منبع باز به چندین نفر این امکان را میدهد تا همزمان تغییرات جداگانهای ایجاد کنند. همچنین تیمها را به همکاری همزمان تشویق میکند تا برای ساخت و ویرایش محتوای خود با یکدیگر همکاری کنند.
گیت هاب چگونه کار میکند؟
گیت هاب یک رابط مبتنی بر وب است که سرویس میزبانی مخزن Git مبتنی بر فضای ابری را ارائه میدهد. بدون گیت هاب استفاده از Git به طور کلی نیاز به دانش فنی و تسلط بر خط فرمان دارد. رابط GitHub یک رابط کاربرپسند است، به طوری که کدنویسان مبتدی نیز میتوانند با کمک آن از مزایای Git استفاده کنند. برخی از افراد حتی از GitHub برای مدیریت انواع دیگر پروژه مانند نوشتن کتاب استفاده میکنند.
همچنین میتوانید به وبسایت GitHub بروید و نرمافزاری را جستجو کنید و سورس کد آن را در کامپیوتر خود دانلود یا clone کنید. هنگامی که یک مخزن را کلون میکنید، تمام تاریخچه کد مربوط به مخزن git آن را روی رایانه شخصی خود به دست میآورید. سپس میتوانید تغییراتی را که توسعهدهندگان قبلی در کد ایجاد کردهاند، مشاهده کنید، نسخههای قدیمیتر را بررسی کنید و حتی تغییرات مدنظر خود را اعمال کنید.
فرض کنید برنامهای در اختیار شما قرار گرفته تا یک ویژگی خاص به آن اضافه کنید. وقتی یک توسعهدهنده بخواهد روی بخشی خاص از پایگاه کد کار کند، در این صورت اگر مستقیماً به کد منبع اصلی (official) دسترسی پیدا کرده و آن را ویرایش کند، ممکن است امنیت اطلاعات به خطر افتد. همچنین شکست پروژه شما میتواند کل برنامه را خراب کند. بنابراین بهتر است به جای ساختن ویژگی در شاخه اصلی، یک کپی از برنامه ایجاد کنید و ویژگی را بر روی آن کپی، اجرا نمایید. کنترل نسخ به توسعهدهندگان اجازه میدهد با خیال راحت از طریق دستهبندی (branching) و ادغام (merging) بر روی سورس کد اصلی کار کنند. با دستهبندی، هر توسعهدهنده میتواند بدون اینکه بر بقیه پروژه تأثیر بگذارد، بخشی از سورس کد (repository) را کپی کرده و با خیال راحت تغییراتی در آن قسمت از کد ایجاد کند. بدین ترتیب زمانی که آن بخش از کد تست شده و به درستی کار کند، توسعهکنندگان میتوانند آن کد را دوباره در کد اصلی ادغام کنند. پس از اتمام توسعه ویژگی مورد نظر، از هم تیمیهای خود بخواهید که کد شما را بررسی کنند. اگر تایید آنها را دریافت کردید، میتوانید با خیال راحت شاخه ویژگی خاص خود را در شاخه اصلی ادغام کنید. ضمناً همه این تغییرات قابل ردیابی خواهد بود و در صورت لزوم میتوان دوباره آنها را بازگرداند.
گیت هاب ابزاری حیاتی برای تیم های توسعه دهنده
ممکن است قبلاً نام GitHub را به عنوان برنامهای که برای ذخیره کد در وب استفاده میشود، شنیده باشید. اما در حقیقت گیت هاب بسیار بیشتر از یک مکان ایمن برای نگه داشتن کد در فضای ابری است. گیت هاب با هدف ایجاد یک رابط مشترک ساخته شده است. علاوه بر فضای ذخیرهسازی ساده، گیت هاب یک اکوسیستم کامل با شبکههای اجتماعی پیچیده است که به توسعهدهندگان فردی اجازه میدهد در تیمها و پروژههای متعدد مشارکت کنند. همچنین گیت هاب ابزاری است که تیمهای محلی و توزیع شده، برای همکاری در پروژهها از آن استفاده میکنند.
گیت هاب به چندین توسعهدهنده اجازه میدهد تا به طور همزمان روی یک پروژه مشخص کار کنند. وقتی چندین برنامهنویس دارید که روی یک فایل کار میکنند، زمان ادغام مجدد نسخههای مختلف احتمال بروز مشکلات وجود دارد. سیستم کنترل نسخه git در گیت هاب، راه حل مشکل نسخههای متناقض است. با کمک GitHub، توسعهدهندگان میتوانند برای مشکلاتی که در طول فرآیند توسعه به وجود میآید، به طور همزمان راهحلهایی ایجاد کنند. در نتیجه جلوی انجام کارهای تکراری یا متناقض گرفته شده و زمان تولید نهایی کاهش پیدا میکند. این نوع همکاری میتواند به تولید سطح بالاتری از کنترل کیفیت کمک کند.
اصطلاحات گیت هاب
مسلط شدن به اصطلاحات GitHub ممکن است در ابتدا بسیار مشکل به نظر برسد، اما هر چه اعضای تیم بیشتر با این پلتفرم تعامل داشته باشند، درک نکات آن آسانتر خواهد بود. اصطلاحات رایجی را که تیمها در هنگام استفاده از GitHub باید درک کنند عبارتند از:
- مخزن (repo): پوشهای که تمام فایلها با تاریخچه نسخ تغییر یافته در آن ذخیره میشود.
- شاخه (Branch): یک فضای کاری مجزا که میتوانید در آن تغییراتی ایجاد کنید که روی سورس اصلی تاثیری نخواهد داشت.
- مارک دان (md): راهی برای نوشتن در Github که متن ساده را به کد GitHub تبدیل میکند. سایتهایی مانند Atom و Sublime Text نمونههایی از منابع رایگان برای توسعه دهندگانی هستند که از Markdown استفاده میکنند.
- لیست تغییرات (Commit): یک رکورد از تغییرات که در فایلی در مخزن ذخیره شده است.
- درخواست ارسال (PR): روشی برای درخواست ادغام تغییرات ایجاد شده یک بخش در بخش دیگر که به دیگر کاربران اجازه میدهد، تغییرات را ببینند و آن را به بحث و بررسی بگذارند.
- ادغام (Merge): پس از تایید درخواست، تغییرات از یک شاخه به شاخه دیگر فرستاده شده و سپس در سایت اصلی مستقر میشود.
- مبحث جدید (Issues): نحوه ردیابی کار هنگام استفاده از git. این ویژگی به کاربران اجازه میدهد تا وظایف جدید و محتواهای اصلاح شده را گزارش کنند و همچنین میزان پیشرفت پروژه را از ابتدا تا انتهای آن پیگیری نمایند.
نحوه کار با توابع و ویژگیهای اصلی گیت هاب
فرآیند اصلی گیت هاب برای ویرایش و ایجاد تغییر در کدها دارای چهار مرحله اصلی است که به آنها Introduction Sequence گفته میشود و در نهایت مرحله بازسازی کد (rebasing) است. این مراحل عبارتند از:
- ایجاد یک مخزن committing
- مدیریت شاخه ها branching
- ارسال درخواست pulling
- ادغام تغییرات merging
در ادامه هر کدام از موارد بالا را به طور اجمالی توضیح میدهیم:
ایجاد مخازن
مخازن یا به اختصار repos میتوانند توسط هر کسی ایجاد شوند. هر کسی میتواند در گیت هاب ثبت نام کند و یک مخزن کد عمومی را به صورت رایگان میزبانی کند. هر مخزن معمولاً برای یک پروژه مجزا استفاده میشود. مخازن GitHub به طور پیش فرض برای عموم در دسترس هستند. با این حال، برای ایجاد تغییرات در پایگاه کد اصلی، اجازه دسترسی و تایید مدیر مخزن لازم است. البته کاربران میتوانند با هزینه کمی پروژههای خود را خصوصی نگه دارند. در این حالت، مالک مخزن تعیین میکند که چه کسی میتواند کد را مشاهده یا کپی کند. مخازن گیت هاب یکی از اصلیترین عناصر فنی هر پروژه از جمله پروژههای بلاکچین است که بررسی آن میتواند میزان اعتبار پروژه را مشخص کند.
ایجاد شاخهها
هنگامی که شخصی میخواهد تغییراتی در یک مخزن کد ایجاد کند، یک شاخه جداگانه از نسخه فعلی کد یا همان شاخه اصلی (master branch) ایجاد میکند که در واقع مانند یک کپی از آن است. توسعهدهنده تا زمانی که ویژگی کامل شود، روی این شاخه جدید کار خواهد کرد. سپس توسعهدهنده کد را در شاخه جدید ذخیره میکند و پس از آن یک درخواست (pull request) ارسال میکند. بدین ترتیب اعضای تیم میتوانند کد جدید را بررسی کرده و سپس مدیر میتواند ادغام آن در شاخه اصلی را تأیید نماید. در نهایت کد در شاخه اصلی ادغام میشود و شاخه جدید را میتوان حذف کرد.
شبکه اجتماعی GitHub
از آنجایی که GitHub ذاتاً مشارکتی است، یکی دیگر از ویژگیهای اصلی آن، شبکه اجتماعی آن است. کاربران میتوانند عکسها و رزومه خود را آپلود کنند، کاربران دیگر را دنبال کنند و پروژههای آنها را در لیست مورد علاقه خود قرار دهند. در پروفایل هر کاربر، تعداد دنبالکنندگان آن، فهرستی از مخازنی که به آن دسترسی دارد و حتی دفعات مشارکت آن در دورههای گذشته نمایش داده میشود. از طرف دیگر میتوانند تیمها یا سازمانهایی را تشکیل دهند. مدیران این تیمها میتوانند میزان دسترسی اعضا را کنترل کنند. امروزه بسیاری از شرکت ها از GitHub استفاده میکنند، بنابراین آشنایی با آن برای ورود به بازار کار کاملا ضروری است. گیت هاب با فروش مخازن کد خصوصی میزبانی شده و همچنین ارائه برنامههای کسب و کاری که بر مدیریت اعضای تیم و امنیت فایلها متمرکز است، درآمد کسب میکند.
ایجاد محتوای سایت در گیت هاب
از گیت هاب میتوان برای ایجاد، ویرایش و به روز رسانی محتوای وب ۳ نیز استفاده کرد. تغییرات میتواند توسط هر عضوی از تیم توسعهدهنده و حتی افراد خارج از تیم که به مخزن دسترسی دارند، انجام شود. فدرالیست پلتفرمی است که در عرض چند دقیقه میتواند به طور ایمن یک وب سایت را از یک مخزن GitHub روی نت نصب کند و به کاربران اجازه پیش نمایش تغییرات را میدهد. روش زیر یک روش گام به گام است که در آن کاربران GitHub میتوانند وب سایت خود را توسط فدرالیست توسعه دهند:
- اعضای تیم یک مبحث را از طریق هیئت مدیره پروژه باز میکنند.
- اعضای تیم از آخرین نسخه شاخه اصلی (main branch) موجود در مخزن یک شاخه جدید ایجاد میکنند که کل اعضا تیم روی آن کار کنند.
- اعضای تیم رکورد ویرایش و تغییر (commit) را به بخشهای مربوطه خود اضافه میکنند.
- اعضای تیم یک درخواست ارسال را باز میکنند که میتوانند سایر اعضای تیم را برای بازبینی تغییرات محتوا و بحث در مورد جزئیات رکورد تغییرات فراخوان کند.
- اعضای تیم میتوانند تغییرات را در نسخه آزمایشی وبسایت مشاهده کنند و از بازبینها درخواست کنند تا تغییر را تایید کرده یا در مورد آن نظر دهند.
- پس از انتظار برای تکمیل ساخت فدرالیست، هنگامی که بازبینها درخواست ارسال را تأیید کردند، commit ها در شاخه اصلی ادغام شده و در سایت منتشر میشوند.
در ضمن کاربران گیت هاب هنگام انجام یک پروژه میتوانند محتوای خود را روی یک واژهپرداز خارجی یا Google Docs بنویسند و سپس این فایلها را در بردهای پروژه مربوطه خود ذخیره کنند. این مراحل به توسعهدهندگان و سازندگان محتوا اجازه میدهد تا یک نسخه اصلی از فایل را داشته باشند و آن را با تغییرات ایجاد شده در طول یک پروژه مقایسه کنند.