خانه توسعهدهنده تکنولوژی گیت گیت هاب (GitHub) چیست؟
گیت هاب (GitHub) چیست؟
اگر با حوزه فناوری آشنایی دارید، احتمالاً نام GitHub را شنیدهاید. ممکن است در زمان یادگیری توسعه نرمافزار یا وب نیز با یک یا دو مخزنِ GitHub برخورد کرده باشید. اما گیت هاب (GitHub) چیست؟
اگر تجربه استفاده از گیت هاب (GitHub) را نداشته باشید، احتمالاً برایتان گیجکننده به نظر میرسد. آیا گیت هاب یک سایت ذخیرهسازی ابری است؟ یا یک سایت شبکهسازی اجتماعی برای برنامهنویسان؟ یا اینکه سایتی است برای به اشتراکگذاشتن کد؟ از قرار معلوم، پاسخ تمام این سؤالات مثبت است.
اگر میخواهید بدانید که گیت هاب (GitHub) چیست و اطلاعات بیشتری در مورد علت محبوبیت، نحوه کار و کاربرد آن بدست بیاورید و مهمتر از همه بدانید که Git چیست، در ادامه مطلب با ما همراه باشید.
فهرست مطالب
Toggleگیت هاب (GitHub) چیست؟
GitHub درواقع یک پلتفرم توسعه نرمافزار آنلاین است که به منظور ذخیرهسازی، ردیابی و همکاری در پروژههای نرمافزاری مورد استفاده قرار میگیرد. این برنامه به توسعهدهندگان اجازه میدهد که فایلهای خود را آپلود کرده و با سایر توسعهدهندگان در پروژههای متنباز همکاری داشته باشند. گیت هاب به عنوان یک سایت شبکهسازی اجتماعی نیز فعالیت میکند که توسعهدهندگان میتوانند در آن به شبکهسازی بپردازند و با سایر افراد همکاری کرده و کارهای خود را معرفی کنند.
GitHub از زمان تأسیس خود یعنی سال 2008 توانسته است میلیونها کاربر را به خود جذب کرده و به عنوان یک پلتفرم پیشرو برای پروژههای نرمافزاری مشترک شناخته شود. خدمات این برنامه کاملاً رایگان بوده و دارای چندین ویژگی کاربردی جهت اشتراکگذاری کد و همکاری همزمان با سایر افراد است.
افزون بر عملکردهای مبتنی بر کد، GitHub کاربران را به ایجاد پروفایل و برند شخصی خود تشویق میکند. شما بهراحتی میتوانید پروفایل هر یک از افراد را مشاهده کرده و ببینید که مالکیت و مشارکت در چه پروژههایی را برعهده دارند. به همین دلیل پلتفرم گیت هاب به نوعی به شبکه اجتماعی برنامهنویسان تبدیل شده است و رویکرد مشارکتی را جهت توسعه نرمافزار و وبسایت ترویج میدهد.
در ادامه اطلاعات بیشتری در مورد GitHub در اختیار شما قرار خواهیم داد. اما پیش از آن بهتر است ابتدا با مفهوم Git به خوبی آشنا شوید.
Git چیست؟
Git در واقع یک سیستم کنترل نسخه متنباز است که برای مدیریت و ردیابیِ ویرایش فایلها مورد استفاده قرار میگیرد. اگرچه گیت میتواند برای هر نوع فایلی استفاده شود، اما اغلب برای ردیابی فایلهای کد کاربرد دارد. Git پرکاربردترین سیستم کنترل نسخه در توسعه نرمافزار به شمار میرود و GitHub نیز از فناوری آن برای ارائه خدمات خود بهره میبرد.
احتمالاً پیش از این نیز تجربه استفاده از نرمافزارهای کنترل نسخه را داشتهاید. برای مثال، Google Docs و همچنین سایر ابزارهای Google Workspace، یک ابزار Version History دارند که در آن میتوانید تغییرات سند را در مقاطع زمانی مختلف مشاهده کنید. قابلیت Track Changes در Microsoft Office نیز از ویژگی مشابهی برخوردار است. البته ممکن است ترجیح بدهید که چندین نسخه کپی از یک فایل را ذخیره کرده و آنها را با نامهای ورژن یک، ورژن دو و… نامگذاری کنید!
کنترل نسخهی پیشرفته برای پروژههای نرمافزاری، بهخصوص پروژههای مشارکتی ضروری است. توسعهدهندگان در زمان ساخت یک نرمافزار، به صورت مکرر و همزمان کد را برای اضافه کردن ویژگیها و رفع اشکالات موجود بهروز میکنند. از آنجایی که هر مشکلی میتواند روی کاربران تأثیر بگذارد، ایجاد تغییرات به صورت مستقیم در کد منبع منطقی به نظر نمیرسد. درعوض، توسعهدهندگان روی کپیهایی که از کد تهیه کردهاند کار میکنند و بعد از آزمایش کامل کد، کد مربوطه را به codebase اصلی اضافه میکنند.
به نظر میرسد که روش خوبی باشد. اما اگر راهی برای ترکیب مشارکت همه در یک کدبیس یکپارچه یا مشاهده اینکه چه کسی تغییرات را اعمال کرده است وجود نداشته باشد، با وجود مشارکتکنندگان متعدد همهچیز میتواند بهسرعت آشفته شود. تمام تغییرات بایستی ردیابی و ذخیره شوند تا در صورت خرابی، توسعهدهندگان بتوانند به عقب بازگشته و نسخه پیشین را بازیابی کنند.
Git به همین منظور ساخته شده است. زمانی که توسعهدهنده قصد دارد تغییری در نرمافزار ایجاد کند، میتواند یک نسخه کپی از کد منبع را از محل ذخیرهسازی مرکزی آن – به آن مخزن (repository) یا به اختصار ریپو (Repo) میگویند – در سیستم محلی (Local) خود دانلود کرده و با خیال آسوده اصلاحات را در نسخه کپی خود اعمال کند. سپس نسخه کپیِ اصلاحشده را به همراه توضیحات پیشنهادی مربوط به تغییرات، با فایلهای منبع موجود در مخزن ادغام کند. Git تمام تغییرات را ردیابی کرده و نسخههای قبلی را بهعنوان پشتیبان ذخیره میکند.
مطلب مرتبط: یک چیتشیت برای شروع کار با گیت و گیت هاب
مزایای گیت هاب (GitHub) چیست؟
GitHub به توسعهدهندگان و مهندسان نرمافزار این امکان را میدهد که مخازن عمومی و ریموت را به صورت رایگان در فضای ابری ایجاد کنند. پس از ایجاد یک مخزن در گیت هاب، میتوانید آن را در دستگاه خود کپی کرده، فایلها را در سیستم محلی خود اضافه کرده و تغییر دهید و سپس تغییرات اعمال شده را دوباره به مخزن اصلی، جایی که تغییرات شما به صورت عمومی نمایش داده میشود، ارسال کنید.
اکنون که میدانیم گیت هاب (GitHub) چیست، این سؤال پیش میآید که چرا استفاده از GitHub به توسعه با یک مخزن خصوصی برتری دارد و مزیت استفاده از گیت هاب (GitHub) چیست؟ دلایل اصلی برتری GitHub به شرح زیر است:
ارتقا همکاری
بزرگترین نقطهقوت GitHub مجموعهای از ویژگیهای همکاری پروژه نظیر کنترل نسخه و کنترل دسترسی به شمار میرود.
برای بهتر نشان دادن قابلیتهای گیت هاب، این سناریو را در نظر بگیرید: شما قصد دارید یک بازی آنلاین را کدنویسی کنید و در این کار از دوست خود نیز کمک میگیرید. بنابراین یک مخزن در GitHub ایجاد میکنید که تمامی فایلها شامل نسخههای فعلی و قبلی را در خود ذخیره میکند. سپس به دوست خود هم اجازه دسترسی به این مخزن را میدهید.
تصمیم شما این است که روی روند بازی یا همان گیمپلی اصلی و صفحه نمایشها کار کنید و دوست شما روی منوی بازی و صفحات تنظیمات آن تمرکز کند. برای اینکه هر دو شما بتوانید تغییرات خود را بهصورت همزمان و بدون دخالت در کار یکدیگر اعمال کنید، یک شاخه (branch) – یک محدوده توسعه جداگانه – ایجاد میکنید تا همتیمی شما بتواند روی وظایف خود کار کند و همزمان شما هم در شاخه دیگر به کار خود ادامه میدهید.
زمانی که دوست شما کار خود را به اتمام برساند، این امکان را دارد که برای ترکیب کار خود با شما یک pull request ارائه دهد. در صورت تأیید شما، میتوانید شاخهها و کدهای خود را با یکدیگر ادغام کنید.
حال تصور کنید که توسعهدهنده دیگری مخزن بازی شما را مشاهده کرده و ایدههایی برای اضافه کردن حالت بازی چندنفره دارد. این فرد میتواند مخزن شما را fork کرده یا یک نسخه کپی از روی آن بسازد و سپس ویژگیهای جدید خود را به آن اضافه کند. پس از پایان کار، میتواند یک pull request برایتان ارسال کند. اگر شما این درخواست را تأیید کنید، مخزنِ فورکشده با مخزن شما ادغام میشود و بازی شما به شکل چندنفره درمیآید. توجه کنید که هر فردی میتواند یک مخزن عمومی را فورک کند، اما این صاحبان اصلی مخزن هستند که تصمیم میگیرند pull requestها را بپذیرند یا خیر.
البته که هیچ نرمافزاری از آغاز کامل نیست، به همین دلیل، مخزنِ گیت هاب یک بخش را به مسائلی نظیر فهرست کارها، گزارش مشکلات بازی شما، گفتگو درباره آنها و علامتگذاری موارد برطرفشده اختصاص داده است. بهمنظور رسیدگی به این مشکلات، بایستی به گزارش تغییرات (Changelog) فایل نگاهی بیندازید تا از زمان و مکان وقوع مشکل مطلع شوید.
در مجموع، گیت هاب فضای متمرکزی را ارائه میدهد که امکان مشارکت یکپارچه را بدون نگرانی درباره نادیده گرفته شدن کار دیگران یا از دست دادن مسیر تغییرات برای دهها یا هزاران توسعهدهنده در یک پروژه فراهم میآورد.
مدیریت فایل آسان
GitHub یک لایه رابط کاربری گرافیکی (GUI) جذاب را به Git اضافه میکند. عملکرد Git بهتنهایی از طریق خط فرمان (command line) که یک رابط کامپیوتری مبتنی بر متن است، انجام میشود. با اینکه توسعهدهندگان میدانند که چگونه از خط فرمان استفاده کنند، اما این روش برای بسیاری از افراد، کارآمدترین راه ممکن برای تعامل فایلها به شمار نمیرود.
رابط GitHub یک روش خوب و کاربرپسند برای انجام عملیاتهای Git و همچنین مشاهده تاریخچه فایل محسوب میشود. استفاده از این رابط علاوه بر اینکه برای توسعهدهندگان راحتتر است، برای مبتدیانی که در حال یادگیری Git هستند نیز قابلفهمتر و در دسترستر است.
وجود زیرساخت مبتنی بر فضای ذخیرهسازی ابری GitHub مزیت دیگری است که دسترسی به این پلتفرم را راحتتر میکند. کاربران گیت هاب میتوانند در هر موقعیت و در هر دستگاهی به مخزن خود دسترسی داشته؛ آن را دانلود کرده و تغییرات اعمالشده را ارسال کنند. به عبارت دیگر، استفاده از این پلتفرم به این معنا است که شما محدود به یک دستگاه یا محیط نخواهید بود.
شبکهسازی اجتماعی
گیت هاب چیزی فراتر از یک محیط برای کار بر روی کدها است. تمام کاربران پروفایلهایی برای نمایش پروژهها، مشارکتها و فعالیتهای خود در این سایت دارند و میتوانند پروفایلها و مخازن عمومی سایر افراد را نیز مشاهده کنند.
شبکه اجتماعی GitHub نقش مهمی در موفقیت آن ایفا میکند، زیرا توسعهدهندگان را تشویق میکند تا به جستوجوی انواع پروژههای متنباز پرداخته و در آنها مشارکت کنند. در گذشته افراد مشتاق، میبایست شخصاً با صاحبان پروژه تماس میگرفتند و درخواست مشارکت خود را مطرح میکردند. اما اکنون با استفاده از گیت هاب، به راحتی میتوان پروژه را فورک کرده و سپس pull request ارائه داد. مالک پروژه میتواند پروفایل و مشارکتهای قبلی افراد را پیش از پذیرش درخواستهای آنها بررسی کند.
GitHub همانند یک پورتفولیو عمل میکند و به عنوان روشی برای به نمایش گذاشتن پروژهها برای کارفرمایان به کار میرود. استخدامکنندگان اغلب از پلتفرم گیت هاب برای یافتن افراد مستعد استفاده میکنند، زیرا کدهای نامزدهای احتمالی جهت بررسی بیشتر در دسترس آنها قرار دارد.
پروژههای متنباز
با توجه به مزایای ذکر شده، گیت هاب به افزایش همکاری در پروژههای متنباز کمک کرده است و موجب ایجاد بسیاری از فناوریهای نرمافزاری پرکاربرد شده است. از فریمورکهای CSS گرفته تا کتابخانههای تصویرسازی (visualization library) یا بازیهایی که احتمالاً زمان زیادی از وقت خود را صرف آنها میکنید و بسیاری از موفقیتهای چشمگیر دیگر بدون مخازن آزاد GitHub میسر نمیشدند.
درست مانند Web 2.0، گیت هاب نیز دروازههای توسعه نرمافزار را برای علاقهمندان به برنامهنویسی گشوده است و مشوق جامعهای فعال، خلاق و سازنده به شمار میرود.
مخازن خصوصی
مطمئنا تمام مواردی که ذکر شد عالی به نظر میرسد. اما اگر همهچیز رایگان و متنباز است، GitHub چگونه کسب درآمد میکند؟
پاسخ این است که گیت هاب خدمات پولی نظیر مخازن خصوصی را نیز ارائه میدهد. در یک طرح پولی، تیمها میتوانند در بستر گیت هاب با یکدیگر همکاری کنند، در حالی که کدهایشان از دید سایر کاربران GitHub پنهان است. GitHub همچنین راهحلهای سازمانی متنوعی را ارائه میدهد که میتوانند سازمانها را به ابزارهای همکاری داخلی مجهز کنند.
نحوه استفاده از گیت هاب (GitHub)
در ادامه، نحوه شروع کار با GitHub را شرح میدهیم. توجه داشته باشید که پیش از آغاز کار با GitHub باید با نحوه استفاده از خط فرمان آشنایی داشته باشید، زیرا Git از ترمینال به عنوان رابط خود بهره میگیرد.
۱. آخرین نسخه Git را روی دستگاه خود نصب کنید. شما برای کار با مخزن GitHub حتما باید Git را بر روی دستگاه خود نصب داشته باشید. روشهای زیادی برای نصب این برنامه وجود دارد، بنابراین توصیهها و دستورالعملهای مندرج در سایت Git را دنبال کنید. دانلود و نصب این برنامه کاملاً رایگان است.
۲. پس از نصب Git، به وبسایت رسمی GitHub مراجعه کرده و با استفاده از آدرس ایمیل خود یک حساب کاربری در آن ایجاد کنید.
۳. پس از ایجاد حساب، به داشبورد خود منتقل میشوید. برای ساخت اولین مخزن خود، روی گزینه Create Repository کلیک کنید.
۴. در صفحه Create a new repository، نام مخزن خود را وارد کرده و یک توضیح اختیاری درباره آن بنویسید (شما میتوانید بعداً هر دو مورد را تغییر دهید).
۵. در همان صفحه، یک فایل README (یک فایل متنی که پروژه شما و بهترین روشهای توسعه را شرح میدهد)، یک فایل Gitignore (که وظیفه حذف فایلهای نامربوط نظیر DS_Store را برعهده دارد) و یک لایسنس را به پروژه خود اضافه کنید.
۶. گزینه Create repository را انتخاب کنید تا به صفحه مخزن اصلی که فایلهای شما را فهرست میکند هدایت شوید.
۷. اکنون میتوانید یک کپیِ محلی از مخزنِ گیت هاب خود ایجاد کنید (یا به عبارت دیگر مخزن خود را کلون یا شبیهسازی کنید) تا بتوانید فایلهایتان را در آن ویرایش کرده و از آنجا تغییرات اعمالشده را ارسال کنید. در صفحه مخزن اصلی، روی دکمه سبز رنگ کلیک کرده و سپس HTTPS URL مخزن خود را کپی کنید.
۸. ترمینال خود را باز کنید و به محلی که میخواهید نسخه کپی را در آن قرار دهید بروید.
۹. در بخش ترمینال، عبارت git clone را وارد کنید و سپس URL مخزنی که قبلاً کپی کرده بودید را وارد کنید. دستور شما باید به شکل زیر باشد:
git clone https://github.com/your-username/your-repo-name.git
۱۰. دکمه Enter را فشار دهید تا مخزن کپی شود. بدین ترتیب یک فایل جدید با نام مخزنتان به سیستم محلی شما اضافه شده است. اگر این فایل را باز کنید، فایلهای موجود در مخزنِ گیت هاب خود را مشاهده خواهید کرد. این فایلها نسخههای کپی شده از فایلهای مخزن شما هستند که میتوانید آنها را ویرایش کرده و سپس به مخزن خود ارسال کنید.
۱۱. حالا در کلون محلی خود یک فایل متنی جدید به نام hello.txt ایجاد کنید و عبارت !Hello, world را در آن ذخیره کنید.
۱۲. از قسمت ترمینال، به مخزن شبیهسازیشده خود وارد شوید.
۱۳. در بخش ترمینال عبارت .git add را تایپ کرده و سپس کلید Enter را فشار دهید. این عملیات تمام فایلهای درون مخزن کلونشدهی شما را برای ارسال به مخزن اصلی آماده میکند.
۱۴. در قسمت ترمینال، عبارت ”git commit -m “added hello.txt را تایپ کرده و دکمه Enter را فشار دهید تا تغییرات شما را در Commit ،Changelog کند. متن داخل کوتیشن به صورت خلاصه هدف Commit را توضیح میدهد.
۱۵. عبارت git push origin main را در ترمینال تایپ کرده و کلید Enter را فشار دهید.
۱۶. پس از انجام اینکار میتوانید فایل اضافهشده را در مخزنِ گیت هاب خود مشاهده کنید.
مطلب مرتبط: 5 ریپازیتوری گیت هاب (GitHub) که هر توسعهدهندهای باید بشناسد
گیت هاب (GitHub)؛ پلتفرمی در پشت پرده نرمافزار
زمانی که به نوآوریهای تکنولوژی فکر میکنیم، تمایل داریم که همهچیز را به یک شخص خاص مثل Steve Jobs و Bill Gates نسبت دهیم. اما واقعیت امر این است که یک نرمافزار با کمک و همکاری میلیونها توسعهدهنده حرفهای و آماتور ایجاد شده است که با یکدیگر برای توسعه ویژگیهای جدید با روشهایی تازه تلاش میکنند.
این همان ویژگی بارز GitHub است که موانع ورود برای همکاری را کاهش میدهد، بنابراین هر فردی میتواند ایدههای خود را درخصوص پروژههای موردنظر مطرح کرده یا پروژهی خود را آغاز کند. تصور جهان نرمافزارِ متنباز پیش از GitHub دشوار است. درحال حاضر، GitHub برای استفاده همگان از جمله شما آماده است.