GitHub — Microsoftga tegishli bo'lgan, Git repozitoriylarini hosting qilish, birgalikda ishlab chiqish va jarayonlarni avtomatlashtirish uchun eng yirik veb-platformadir. U nafaqat versiya nazorati bilan kod saqlash, balki loyiha boshqaruvi uchun to'liq vositalar to'plamini taqdim etadi: Issue Tracking, kod ko'rib chiqish bilan Pull Request, CI/CD uchun Actions va hujjatlashtirish uchun Wiki. GitHub, 2024 ma'lumotlariga ko'ra, platformada 100 milliondan ortiq dasturchi va 420 million repozitoriy mavjud.
Asosiy ma'lumotlar
GitHub — 2008-yilda Tom Preston-Verner, Kris Vanstrat va P.J. Hayett tomonidan asos solingan Git repozitoriylarini saqlash va birgalikda ishlash uchun veb-xizmatdir. 2018-yilda kompaniya Microsoft tomonidan 7,5 milliard dollarga sotib olingan. Platforma barcha Git operatsiyalari uchun veb-interfeysni ta'minlaydi, uning ustiga ijtimoiy funksiyalarni qo'shadi: fork-lar, yulduzchalar, obunalar, kod ko'rib chiqish va o'rnatilgan uzluksiz integratsiya tizimi.
GitHub-ning raqobatchilardan asosiy farqi — ochiq ekotizim va eng yirik dasturchilar jamiyatidir. GitHub-da Android, Kubernetes, React, Swift, Kotlin va minglab boshqa open-source loyihalarning manba kodlari joylashgan. Bu platformani nafaqat kod saqlash vositasi, balki dasturchilar uchun ijtimoiy tarmoqqa aylantiradi: loyihalarni kuzatish, o'zgarishlarni muhokama qilish va pull request orqali hissa qo'shish mumkin.
Microsoft-ning 2024-yil hisobotiga ko'ra, GitHub orqali har kuni 10 milliondan ortiq yangi Pull Request o'tadi va oylik faol foydalanuvchilar soni 100 milliondan oshgan. Platforma 500 dan ortiq dasturlash tillarini, fayl kengaytmasi bo'yicha avtomatik til aniqlashni va kod sintaksisini ajratib ko'rsatishni qo'llab-quvvatlaydi.
GitHub funksionalligi oddiy Git hostingidan ancha uzoqqa chiqadi. Platforma taklif qiladi: GitHub Actions — o'rnatilgan CI/CD tizimi; GitHub Packages — paketlar va konteynerlar reestri; GitHub Codespaces — VS Code-ga asoslangan bulutli ishlab chiqish muhitlari; GitHub Discussions — jamoa forumi; GitHub Security — bog'liqliklarni avtomatik yangilash va zaifliklarni skanerlash uchun Dependabot; GitHub Copilot — kod yozish uchun AI yordamchisi.
Tashkilotlar uchun GitHub GitHub Enterprise ni taklif qiladi — o'z hostingi bilan (GitHub Enterprise Server) yoki bulutli joylashtirish bilan (GitHub Enterprise Cloud) korporativ versiya. Korporativ funksiyalarga SAML/SSO autentifikatsiyasi, faoliyat auditi, repozitoriy xavfsizlik siyosatlari va 99,95% mavjudlik uchun SLA kiradi. Enterprise versiyasi Google, Apple va Airbnb kabi kompaniyalar tomonidan qo'llaniladi.
GitHub-ning muhim xususiyati — GitHub CLI (gh) veb-interfeysdan foydalanmasdan barcha platforma operatsiyalarini buyruq qatoridan bajarishga imkon beradi. gh yordamida repozitoriylar yaratish, Issues-larni boshqarish, Pull Request-larni ko'rish va Actions-ni to'g'ridan-to'g'ri terminaldan ishga tushirish mumkin, bu buyruq qatoriga o'rganib qolgan dasturchilarning ishini tezlashtiradi.
| Funksiya | Maqsad | Mavjudlik |
|---|---|---|
| Actions | CI/CD va avtomatlashtirish | Bepul 2000 daq/oy |
| Codespaces | VS Code-ga asoslangan bulutli IDE | Pullik, 60 soat/oy bepul |
| Packages | Paketlar va Docker tasvirlari hostingi | Bepul 500 MB |
| Dependabot | Bog'liqliklarni avtomatik yangilash | Ommaviy repolar uchun bepul |
| Pages | Statik saytlar hostingi | Bepul |
Pull Request (PR) — GitHub-da loyihaga o'zgartirishlar kiritishning asosiy mexanizmidir. Dasturchi o'zgartirishlar bilan filial yaratadi, uni GitHub-da nashr etadi va asosiy filialga birlashtirish so'rovini (Pull Request) yuboradi. Loyihaning boshqa ishtirokchilari filiallar orasidagi farqni (diff) ko'radi, kodning aniq qatorlariga sharh qoldira oladi, o'zgartirishlar taklif qiladi va so'rovni tasdiqlaydi yoki rad etadi.
GitHub-da kod ko'rib chiqish jarayoni PR atrofida qurilgan. Har bir sharh diff-ning aniq qatoriga bog'lanadi va uch turda bo'lishi mumkin: Comment (oddiy sharh), Request Changes (tuzatishlarni talab qiladi) va Approve (tasdiqlash). O'zgartirishlar kiritilgandan so'ng, muallif PR-ni yangi commit bilan yangilaydi va ko'rib chiqish jarayoni takrorlanadi. Barcha mulohazalar bartaraf etilganda va PR tasdiqlanganda, o'zgartirishlar maqsadli filialga birlashtiriladi.
# Feature filialini yaratish va push
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# CLI orqali PR yaratish
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# PR ni ko'rish va merge
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
GitHub filial himoyasini (branch protection rules) qo'llab-quvvatlaydi: main-ga to'g'ridan-to'g'ri push-ni taqiqlash, merge-dan oldin majburiy tasdiqlar sonini talab qilish, Actions tekshiruvlarini ishga tushirish va birlashtirishdan oldin filialning dolzarbligini talab qilish mumkin. Filial himoyasi Settings → Branches da sozlanadi va ishlab chiqarish loyihalari uchun majburiy amaliyot bo'lib, asosiy filialga beqaror kodning tasodifiy kiritilishining oldini oladi.
GitHub Actions — to'g'ridan-to'g'ri repozitoriyda ish oqimlarini avtomatlashtirishga imkon beruvchi o'rnatilgan CI/CD platformasidir. Workflow .github/workflows/ katalogida joylashgan YAML fayllarida tasvirlanadi. Har bir workflow Linux, Windows yoki macOS bilan virtual mashinalarda — runner-larda bajariladigan bir yoki bir nechta job-dan iborat.
Actions hodisaga yo'naltirilgan modelni qo'llab-quvvatlaydi: workflow push, PR yaratish, release nashr etish, jadval bo'yicha yoki webhook orqali ishga tushadi. Bu dasturchi ishtirokisiz qurish, testlarni ishga tushirish, kodni statik tahlil qilish, ilovalar do'konlarida nashr etish va serverga joylashtirishni avtomatlashtirishga imkon beradi. Quyida Android loyihasi uchun workflow namunasi keltirilgan:
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 ekotizimiga GitHub Marketplace-da 20 000 dan ortiq tayyor harakatlar kiradi. Mashhur harakatlar: checkout (repozitoriyni klonlash), setup-java/setup-node/setup-python (muhitni sozlash), upload-artifact (qurish artefaktlarini saqlash), cache (bog'liqliklarni keshlash), slack-notify (Slack-ga bildirishnoma yuborish). Actions shuningdek matritsali qurishni qo'llab-quvvatlaydi — bir nechta OT yoki til versiyalarida bir vaqtning o'zida ishga tushirish.
Issues — GitHub-da o'rnatilgan vazifalarni kuzatish tizimidir. Har bir Issue sarlavha, tavsif, yorliqlar (labels), tayinlangan ijrochilar (assignees), bosqichlar (milestones) va bog'liq Pull Request-ga ega. Issues shablonlashtirilishi mumkin — xato hisobotlari, funksiya so'rovlari yoki savollar uchun yaratishda avtomatik ravishda almashtiriladigan turli shablonlar qo'llaniladi.
GitHub Projects (avvalgi Projects Beta) — Jira va Trello-ga o'xshash doskalarga asoslangan loyiha boshqaruvi vositasidir. Projects maxsus maydonlarni (holat, ustuvorlik, sprint), Issues va Pull Request bilan bog'lanishni, vazifa holati o'zgarganda kartalarni avtomatik ko'chirishni va burndown chart ko'rinishidagi analitikani qo'llab-quvvatlaydi. Projects ikki rejimda mavjud: Table (jadval ko'rinishi) va Board (kanban doskasi).
Chiqarishlarni boshqarish uchun GitHub Milestones ni taklif qiladi — umumiy maqsad va muddat bilan birlashtirilgan Issue va PR guruhlari. Har bir bosqich bajarilish holatini ko'rsatadi: qancha vazifa ochiq, qancha yopiq va muddatga rioya qilinayotganligini. Milestones Releases bilan integratsiyalashadi — nashrni chiqarishda uni bosqichga bog'lash va yopiq Issue-lar asosida CHANGELOG-da avtomatik o'zgarishlar ro'yxatini yaratish mumkin.
GitHub Pages — repozitoriy tarkibini https://username.github.io/repository manzilida avtomatik nashr etadigan bepul statik sayt hostingidir. Pages HTML, CSS, JavaScript va statik generatorlarni qo'llab-quvvatlaydi: Jekyll (o'rnatilgan), Hugo, Next.js (eksport) va MkDocs. Sozlash nashr qilish uchun filial va katalogni tanlash, shuningdek, maxsus domenni qo'llab-quvvatlashni o'z ichiga oladi.
Texnik hujjatlashtirish uchun GitHub Wiki ni taklif qiladi — shuningdek Git repozitoriy sifatida saqlanadigan o'rnatilgan wiki tizimi. Wiki Markdown-ni qo'llab-quvvatlaydi va sahifalarni ham veb-interfeys orqali, ham mahalliy ravishda wiki repozitoriyga push orqali tahrirlash imkonini beradi. Har bir Wiki sahifasi o'z o'zgarishlar tarixiga ega, bu API, arxitektura va loyiha jarayonlarini hujjatlashtirish uchun qulaydir.
GitHub Pages + Jekyll birikmasi hujjatlashtirish saytlari uchun mashhur yechimdir. Jekyll avtomatik ravishda Markdown fayllarini statik HTML sahifalarga aylantiradi, mavzular, navigatsiya va qidirishni qo'llab-quvvatlaydi. Masalan, Android Developers hujjatlari avval GitHub Pages-da Jekyll-ni ishlatgan, hozir esa — ichki platformani, ammo minglab open-source loyihalar o'z saytlari uchun ushbu birikmadan foydalanishda davom etmoqda.
GitHub CLI (gh) platformadagi barcha operatsiyalarni buyruq qatori orqali bajarishga imkon beradi: repozitoriylar yaratish, Issues-larni boshqarish, Pull Request-larni ko'rish va tasdiqlash, Actions-ni ishga tushirish. gh repo create my-project --public buyrug'i masofaviy repozitoriy yaratadi va uni mahalliy bilan bog'laydi, gh pr create esa joriy filialdan Pull Request yaratadi. CLI veb-interfeys o'rniga terminalni afzal ko'radigan dasturchilarning ishini tezlashtiradi.
GitHub REST API va GraphQL API platformaning barcha funksiyalariga dasturiy kirishni ta'minlaydi: Issue yaratish, foydalanuvchilarni boshqarish, statistika olish va Actions-ni boshqarish. GraphQL API murakkab so'rovlar uchun afzalroqdir, chunki bir so'rovda faqat kerakli maydonlarni olish imkonini beradi. REST API uchun rate limit — autentifikatsiyalangan foydalanuvchilar uchun soatiga 5000 so'rov. API GitHub-ning tashqi CI tizimlari va ichki DevOps vositalari bilan integratsiyasi uchun keng qo'llaniladi.
GitHub Gist — to'liq repozitoriy yaratmasdan kod fragmentlarini nashr etish xizmatidir. Gist sintaksis ajratib ko'rsatishni, tashqi saytlarga joylashtirishni va versiyalar tarixini qo'llab-quvvatlaydi. Har bir Gist ommaviy (qidiruvda ko'rinadigan) yoki maxfiy (faqat havola orqali kirish mumkin) bo'lishi mumkin. Gist jamoa yozishmalarida konfiguratsiyalar, loglar va kod namunalarini tezkor almashish uchun, shuningdek dasturchilar uchun Pastebin analogi sifatida ishlatiladi.
Ko'p beriladigan savollar
GitHub ochiq jamiyat va ijtimoiy funksiyalarga (fork-lar, yulduzchalar) urg'u beradi. GitLab kuchliroq o'rnatilgan CI/CD va Actions daqiqalari cheklovisiz o'z hostingini (Self-Managed) taklif qiladi.
GitHub Team oyiga foydalanuvchi boshiga 4 dollar turadi va cheksiz xususiy repozitoriylar, filial himoyasi va Actions (3000 daqiqa) beradi. Bepul tarif kichik open-source loyihalar uchun mos keladi.
Repozitoriy yaratishda Public o'rniga Private ni tanlang. Xususiy repozitoriylarda kodni faqat taklif qilingan ishtirokchilar ko'radi. Bepul tarifda xususiy repozitoriylar 3 kollaborator cheklovi bilan mavjud.
GitHub Copilot — OpenAI Codex-ga asoslangan, real vaqtda kodni avtomatik to'ldirishni taklif qiluvchi AI yordamchisi. VS Code, JetBrains va Neovim da ishlaydi, barcha mashhur dasturlash tillarini qo'llab-quvvatlaydi.
Settings → Danger Zone → Delete this repository ga o'ting. O'chirish qaytarib bo'lmaydi — barcha commit-lar, Issue-lar va Wiki tiklash imkoniyatisiz o'chiriladi. Oldindan zaxira nusxangiz borligiga ishonch hosil qiling.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.
Shuningdek o'qing