GitHub — بزرگترین پلتفرم وب برای میزبانی مخازن Git، توسعه مشترک و خودکارسازی فرآیندها است که متعلق به Microsoft میباشد. این پلتفرم نه تنها ذخیرهسازی کد با کنترل نسخه، بلکه مجموعه کاملی از ابزارهای مدیریت پروژه را ارائه میدهد: Issue Tracking، Pull Request با بازبینی کد، Actions برای CI/CD و Wiki برای مستندات. طبق دادههای GitHub، 2024، این پلتفرم بیش از ۱۰۰ میلیون توسعهدهنده و ۴۲۰ میلیون مخزن دارد.
نکات اصلی
GitHub — سرویس وب برای ذخیرهسازی و کار مشترک روی مخازن Git است که در سال ۲۰۰۸ توسط تام پرستون-ورنر، کریس وانسترات و پیجی هایت تأسیس شد. در سال ۲۰۱۸ شرکت توسط Microsoft به قیمت ۷.۵ میلیارد دلار خریداری شد. این پلتفرم رابط وب برای تمام عملیات Git فراهم میکند و روی آن ویژگیهای اجتماعی را اضافه میکند: فورکها، ستارهها، اشتراکها، بازبینی کد و سیستم یکپارچهسازی مداوم داخلی.
تفاوت اصلی GitHub با رقبا — اکوسیستم باز و بزرگترین جامعه توسعهدهندگان است. در GitHub کدهای منبع Android، Kubernetes، React، Swift، Kotlin و هزاران پروژه open-source دیگر قرار دارد. این پلتفرم را نه تنها ابزاری برای ذخیرهسازی کد، بلکه شبکه اجتماعی برای توسعهدهندگان میکند: میتوان پروژهها را دنبال کرد، تغییرات را بحث کرد و از طریق pull request مشارکت کرد.
طبق گزارش Microsoft (۲۰۲۴)، روزانه بیش از ۱۰ میلیون Pull Request جدید از GitHub عبور میکند و تعداد کاربران فعال ماهانه از ۱۰۰ میلیون فراتر رفته است. این پلتفرم بیش از ۵۰۰ زبان برنامهنویسی، تشخیص خودکار زبان با پسوند فایل و برجستهسازی سینتکس کد را پشتیبانی میکند.
عملکرد GitHub فراتر از میزبانی ساده Git است. این پلتفرم ارائه میدهد: GitHub Actions — سیستم CI/CD داخلی؛ GitHub Packages — ثبت بستهها و کانتینرها؛ GitHub Codespaces — محیطهای توسعه ابری مبتنی بر VS Code؛ GitHub Discussions — انجمن جامعه؛ GitHub Security — Dependabot برای بهروزرسانی خودکار وابستگیها و اسکن آسیبپذیریها؛ GitHub Copilot — دستیار هوش مصنوعی برای نوشتن کد.
برای سازمانها GitHub GitHub Enterprise را ارائه میدهد — نسخه شرکتی با میزبانی اختصاصی (GitHub Enterprise Server) یا استقرار ابری (GitHub Enterprise Cloud). قابلیتهای شرکتی شامل احراز هویت SAML/SSO، حسابرسی فعالیتها، سیاستهای امنیتی مخازن و SLA با ۹۹.۹۵٪ در دسترس بودن است. نسخه Enterprise توسط شرکتهایی مانند Google، Apple و Airbnb استفاده میشود.
ویژگی مهم GitHub — GitHub CLI (gh) که امکان انجام تمام عملیات پلتفرم را از خط فرمان بدون استفاده از رابط وب فراهم میکند. با gh میتوان مخازن ایجاد کرد، Issues را مدیریت کرد، Pull Request را مشاهده و Actions را مستقیماً از ترمینال اجرا کرد که کار توسعهدهندگان آشنا با خط فرمان را سرعت میبخشد.
| قابلیت | کاربرد | دسترسی |
|---|---|---|
| Actions | CI/CD و خودکارسازی | رایگان ۲۰۰۰ دقیقه/ماه |
| Codespaces | IDE ابری مبتنی بر VS Code | پرداختی، ۶۰ ساعت/ماه رایگان |
| Packages | میزبانی بستهها و تصاویر Docker | رایگان ۵۰۰ مگابایت |
| Dependabot | بهروزرسانی خودکار وابستگیها | رایگان برای مخازن عمومی |
| Pages | میزبانی سایتهای استاتیک | رایگان |
Pull Request (PR) — مکانیزم اصلی اعمال تغییرات در پروژه در GitHub است. توسعهدهنده یک شاخه با تغییرات ایجاد میکند، آن را در GitHub منتشر میکند و درخواست ادغام (Pull Request) به شاخه اصلی میفرستد. سایر شرکتکنندگان پروژه تفاوت (diff) بین شاخهها را میبینند، میتوانند روی خطوط خاص کد نظر بدهند، تغییرات پیشنهاد کنند و درخواست را تأیید یا رد کنند.
فرآیند بازبینی کد در GitHub حول PR ساخته شده است. هر نظر به یک خط خاص از diff متصل میشود و میتواند سه نوع باشد: Comment (نظر عادی)، Request Changes (نیاز به اصلاحات دارد) و Approve (تأیید). پس از اعمال تغییرات، نویسنده PR را با commit جدید بهروز میکند و فرآیند بازبینی تکرار میشود. وقتی تمام نکات برطرف و PR تأیید شد، تغییرات در شاخه هدف ادغام میشوند.
# ایجاد شاخه feature و push
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# ایجاد PR از طریق CLI
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# مشاهده و merge PR
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
GitHub از محافظت از شاخه (branch protection rules) پشتیبانی میکند: میتوان push مستقیم به main را ممنوع کرد، تعداد تأییدهای اجباری قبل از merge را الزامی کرد، بررسیهای Actions را اجرا کرد و بهروز بودن شاخه قبل از ادغام را الزامی کرد. محافظت شاخه در Settings → Branches پیکربندی میشود و برای پروژههای تولیدی یک رویه اجباری است که از ورود تصادفی کد ناپایدار به شاخه اصلی جلوگیری میکند.
GitHub Actions — پلتفرم CI/CD داخلی است که امکان خودکارسازی گردش کار را مستقیماً در مخزن فراهم میکند. Workflow در فایلهای YAML که در دایرکتوری .github/workflows/ قرار دارند توصیف میشود. هر workflow از یک یا چند job تشکیل شده که روی runnerها — ماشینهای مجازی با Linux، Windows یا macOS — اجرا میشوند.
Actions از مدل رویدادمحور پشتیبانی میکند: workflow با push، ایجاد PR، انتشار release، طبق زمانبندی یا از طریق webhook راهاندازی میشود. این امکان خودکارسازی ساخت، اجرای تست، تحلیل استاتیک کد، انتشار در فروشگاههای برنامه و استقرار روی سرور را بدون دخالت توسعهدهنده فراهم میکند. در زیر نمونه workflow برای پروژه Android آورده شده است:
name: Android CI
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew assembleDebug
اکوسیستم Actions شامل بیش از ۲۰۰۰۰ اقدام آماده در GitHub Marketplace است. اقدامات محبوب: checkout (کلون کردن مخزن)، setup-java/setup-node/setup-python (پیکربندی محیط)، upload-artifact (ذخیره مصنوعات ساخت)، cache (کش کردن وابستگیها برای سرعت)، slack-notify (ارسال اعلان به Slack). Actions همچنین از ساخت ماتریسی پشتیبانی میکند — اجرای همزمان روی چند نسخه از سیستمعامل یا زبان.
Issues — سیستم داخلی ردیابی وظایف در GitHub است. هر Issue دارای عنوان، توضیحات، برچسبها (labels)، مجریان تعیین شده (assignees)، نقاط عطف (milestones) و Pull Request مرتبط است. Issues میتوانند قالبی داشته باشند — برای گزارش اشکال، درخواست ویژگی یا سؤالات از قالبهای مختلفی استفاده میشود که هنگام ایجاد به طور خودکار جایگزین میشوند.
GitHub Projects (قبلاً Projects Beta) — ابزار مدیریت پروژه مبتنی بر تابلو، مشابه Jira و Trello است. Projects از فیلدهای سفارشی (وضعیت، اولویت، اسپرینت)، ارتباط با Issues و Pull Request، خودکارسازی جابجایی کارتها هنگام تغییر وضعیت وظیفه و تحلیل به شکل نمودار سوختن وظایف (burndown chart) پشتیبانی میکند. Projects در دو حالت موجود است: Table (نمایش جدولی) و Board (تابلو کانبان).
برای مدیریت انتشارها GitHub Milestones را ارائه میدهد — گروههایی از Issue و PR که با یک هدف مشترک و مهلت زمانی متصل شدهاند. هر نقطه عطف پیشرفت را نشان میدهد: چند وظیفه باز، چند بسته و آیا مهلت رعایت میشود. Milestones با Releases ادغام میشوند — هنگام انتشار نسخه میتوان آن را به نقطه عطف متصل کرد و به طور خودکار لیست تغییرات در CHANGELOG بر اساس بستههای Issue ایجاد کرد.
GitHub Pages — میزبانی رایگان برای سایتهای استاتیک است که به طور خودکار محتوای مخزن را در آدرس https://username.github.io/repository منتشر میکند. Pages از HTML، CSS، JavaScript و تولیدکنندگان استاتیک پشتیبانی میکند: Jekyll (داخلی)، Hugo، Next.js (خروجی) و MkDocs. پیکربندی شامل انتخاب شاخه و دایرکتوری برای انتشار و همچنین پشتیبانی از دامنه سفارشی است.
برای مستندات فنی GitHub Wiki را ارائه میدهد — سیستم ویکی داخلی که همچنین به عنوان مخزن Git ذخیره میشود. Wiki از Markdown پشتیبانی میکند و امکان ویرایش صفحات را هم از طریق رابط وب و هم به صورت محلی از طریق push به مخزن wiki فراهم میکند. هر صفحه Wiki تاریخچه تغییرات خود را دارد که برای مستندسازی API، معماری و فرآیندهای پروژه مناسب است.
ترکیب GitHub Pages + Jekyll — راهحل محبوب برای سایتهای مستندات است. Jekyll به طور خودکار فایلهای Markdown را به صفحات HTML استاتیک تبدیل میکند، از تمها، ناوبری و جستجو پشتیبانی میکند. به عنوان مثال، مستندات Android Developers قبلاً از Jekyll در GitHub Pages استفاده میکرد و اکنون — از پلتفرم داخلی، اما هزاران پروژه open-source هنوز از این ترکیب برای سایتهای خود استفاده میکنند.
GitHub CLI (gh) امکان انجام تمام عملیات پلتفرم را از طریق خط فرمان فراهم میکند: ایجاد مخازن، مدیریت Issues، مشاهده و تأیید Pull Request، اجرای Actions. دستور gh repo create my-project --public یک مخزن راه دور ایجاد میکند و آن را به مخزن محلی متصل میکند و gh pr create یک Pull Request از شاخه جاری ایجاد میکند. CLI کار توسعهدهندگانی را که ترمینال را به رابط وب ترجیح میدهند سرعت میبخشد.
GitHub REST API و GraphQL API دسترسی برنامهنویسی به تمام قابلیتهای پلتفرم را فراهم میکنند: ایجاد Issue، مدیریت کاربران، دریافت آمار و مدیریت Actions. GraphQL API برای پرسوجوهای پیچیده ترجیح داده میشود زیرا امکان دریافت فقط فیلدهای مورد نیاز را در یک پرسوجو میدهد. محدودیت نرخ برای REST API — ۵۰۰۰ پرسوجو در ساعت برای کاربران احراز هویت شده. API به طور گسترده برای ادغام GitHub با سیستمهای CI خارجی و ابزارهای داخلی DevOps استفاده میشود.
GitHub Gist — سرویسی برای انتشار قطعات کد بدون ایجاد مخزن کامل است. Gist از برجستهسازی سینتکس، جاسازی در سایتهای خارجی و تاریخچه نسخه پشتیبانی میکند. هر Gist میتواند عمومی (قابل مشاهده در جستجو) یا مخفی (فقط از طریق لینک قابل دسترس) باشد. Gist برای اشتراک سریع پیکربندیها، لاگها و نمونههای کد در مکاتبات تیمی و همچنین به عنوان معادل Pastebin برای توسعهدهندگان استفاده میشود.
سؤالات متداول
GitHub بر جامعه باز و ویژگیهای اجتماعی (فورکها، ستارهها) تأکید دارد. GitLab CI/CD داخلی قدرتمندتر و میزبانی اختصاصی (Self-Managed) بدون محدودیت دقیقه Actions ارائه میدهد.
GitHub Team ماهانه ۴ دلار به ازای هر کاربر هزینه دارد و مخازن خصوصی نامحدود، محافظت از شاخه و Actions (۳۰۰۰ دقیقه) ارائه میدهد. تعرفه رایگان برای پروژههای کوچک open-source مناسب است.
هنگام ایجاد مخزن به جای Public گزینه Private را انتخاب کنید. در مخازن خصوصی کد فقط برای شرکتکنندگان دعوت شده قابل مشاهده است. در تعرفه رایگان مخازن خصوصی با محدودیت ۳ همکار در دسترس هستند.
GitHub Copilot — دستیار هوش مصنوعی مبتنی بر OpenAI Codex است که تکمیل خودکار کد را در زمان واقعی ارائه میدهد. در VS Code، JetBrains و Neovim کار میکند و از تمام زبانهای برنامهنویسی محبوب پشتیبانی میکند.
به Settings → Danger Zone → Delete this repository بروید. حذف غیرقابل بازگشت است — تمام commitها، Issue و Wiki بدون امکان بازیابی حذف میشوند. قبل از آن مطمئن شوید که پشتیبان دارید.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید