GitHub CLI — gh tool bilan terminaldan GitHub boshqarish
Muammodan boshlaylik
Tipik ish oqimi:
git push -u origin feature/qidiruv
Keyin: brauzer → GitHub → repozitoriy → "Compare & pull request" → sarlavha → tavsif → reviewer → Create. Keyin hamkasbning PR ini ko'rish: brauzer → PR lar → topish → branch nomini nusxalash → terminal → git fetch → git switch .... CI holati: brauzer → Actions → ...
Terminal va brauzer orasida kuniga o'nlab marta sakrash. GitHub CLI (gh) — GitHub ni terminaldan boshqarish: PR, issue, reliz, Actions, repozitoriylar.
O'rnatish va kirish
# Windows
winget install --id GitHub.cli
# macOS
brew install gh
# Ubuntu / Debian
sudo apt install gh
gh auth login
? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations? SSH
? Upload your SSH public key to your GitHub account? ~/.ssh/id_ed25519.pub
? How would you like to authenticate GitHub CLI? Login with a web browser
! First copy your one-time code: 8F3A-2B1C
Press Enter to open github.com in your browser...
✓ Logged in as otabek
gh auth status
gh Git uchun autentifikatsiyani ham sozlaydi — HTTPS token muammolari (20-dars) yo'qoladi.
Repozitoriylar
gh repo create dokon --private --source=. --push # joriy papkadan yangi GitHub repo + push
gh repo clone otabek/dokon # qisqa nom bilan clone
gh repo fork kutubxona/ui --clone # fork + clone + upstream (24-dars)
gh repo view # joriy repo haqida
gh repo view --web # brauzerda ochish
gh browse # joriy repo ni brauzerda
gh browse src/app.js:42 # aniq fayl va qatorni
gh repo create --source=. --push — 19-darsdagi qo'lda qadamlarning (GitHub da yaratish, remote add, push -u) hammasi bitta buyruqda.
Pull Request lar
Yaratish
gh pr create
Interaktiv: sarlavha, tavsif (muharrirda), base branch. Yoki bayroqlar bilan:
gh pr create --title "feat: mahsulot qidiruvi" --body "Closes #87" \
--reviewer malika --label enhancement
gh pr create --fill # sarlavha va tavsif — commitlardan
gh pr create --draft # Draft PR (23-dars)
gh pr create --web # brauzerda yakunlash
Branch hali push qilinmagan bo'lsa — gh o'zi push qilishni taklif qiladi.
Ko'rish
gh pr list # ochiq PR lar
gh pr list --author @me
gh pr list --search "review-requested:@me" # men ko'rib chiqishim kerak bo'lganlar
gh pr status # menga tegishli hamma narsa — bir qarashda
gh pr view 101 # PR tavsifi va holati
gh pr diff 101 # diff terminalda
gh pr checks 101 # CI holati
Hamkasb PR ini lokalda sinash
gh pr checkout 101
Bitta buyruq: branch ni yuklaydi, yaratadi va o'tadi — fork dan kelgan PR uchun ham. (Joriy ishingizni to'xtatmaslik kerak bo'lsa — worktree, 46-dars.)
Review va merge
gh pr review 101 --approve
gh pr review 101 --request-changes --body "Bo'sh ro'yxat holati tekshirilmagan"
gh pr review 101 --comment --body "Yaxshi, faqat bitta savol..."
gh pr merge 101 --squash --delete-branch
gh pr merge 101 --auto --squash # CI yashil bo'lishi bilan avtomatik merge
--auto — juda qulay: PR ni tasdiqlab qo'yasiz, testlar o'tishi bilan GitHub o'zi merge qiladi.
Issue lar
gh issue list
gh issue list --label bug --assignee @me
gh issue create --title "Savat: jami summa noto'g'ri" --label bug
gh issue view 42
gh issue view 42 --comments
gh issue comment 42 --body "Takrorlandi, ustida ishlayapman"
gh issue edit 42 --add-assignee @me
gh issue close 42 --reason completed
gh issue develop 42 --checkout # issue uchun branch yaratib, o'tish
Actions
gh run list # oxirgi workflow ishga tushirishlari
gh run watch # joriy run ni jonli kuzatish
gh run view 1234567 --log-failed # faqat xato bergan qadamlar logi
gh run rerun 1234567 --failed # faqat xato bergan job larni qayta
gh workflow run deploy.yml # workflow_dispatch ni qo'lda ishga tushirish (39-dars)
gh run watch — push dan keyin CI ni brauzer ochmasdan kuzatish:
git push && gh run watch
Relizlar va sirlar
gh release create v2.5.0 --generate-notes # 41-dars
gh release list
gh release download v2.5.0
gh secret set SSH_KEY < ~/.ssh/deploy_key # 44-dars
gh secret list
gh variable set APP_URL --body "https://dokon.uz"
gh api — har qanday narsa
gh da maxsus buyruq bo'lmagan narsa uchun — GitHub API ga to'g'ridan-to'g'ri, autentifikatsiya avtomatik:
gh api repos/otabek/dokon
gh api repos/otabek/dokon/contributors --jq '.[].login'
gh api user/repos --paginate --jq '.[] | select(.archived) | .full_name'
--jq — natijani filtrlash (Linux kursi, 33-dars). Skriptlar va avtomatlashtirish uchun kuchli vosita.
Alias va kengaytmalar
gh alias set prs 'pr list --author @me'
gh alias set co 'pr checkout'
gh prs
gh co 101
Kengaytmalar:
gh extension install dlvhdr/gh-dash # PR va issue lar uchun terminal dashboard
gh extension list
Kundalik ish oqimi — gh bilan
gh issue develop 87 --checkout # 1. Issue dan branch
# ... kod, commitlar ...
gh pr create --fill --reviewer malika # 2. PR
gh run watch # 3. CI ni kuzatish
gh pr merge --auto --squash --delete-branch # 4. Testlar o'tgach — avtomatik merge
git switch main && git pull # 5. Yangilash
Brauzer — faqat code review ning o'zi uchun (u yerda diff ko'rish qulayroq).
Nima uchun shunday?
Nima uchun GitHub ning grafik veb-interfeysi bor bo'lsa ham, terminal vositasi kerak?
Ikki sabab. Kontekst: dasturchi kun bo'yi terminalda — Git, testlar, build. Har bir brauzer safari — diqqatni uzish: tablar, bildirishnomalar, qayerda edim? gh GitHub ni ish joyingizga olib keladi. Avtomatlashtirish: brauzerdagi tugmani skriptga yozib bo'lmaydi; gh pr create, gh release create, gh api esa — bash skriptlarga (Linux kursi, 37-dars), CI ga va alias larga tabiiy ravishda kiradi. Bu Git ning o'zi bilan bir xil falsafa: terminal buyruqlari — takrorlanadigan, birlashtiriladigan va avtomatlashtiriladigan.
Xulosa
Eslab qoling:
gh auth login— kirish (Git autentifikatsiyasi ham sozlanadi)- Repo:
gh repo create --source=. --push,gh repo clone,gh repo fork --clone,gh browse - PR:
gh pr create --fill,gh pr list,gh pr status,gh pr checkout N,gh pr review,gh pr merge --auto --squash - Issue:
gh issue list/create/view/close,gh issue develop N --checkout - Actions:
gh run watch,gh run view --log-failed,gh workflow run gh release,gh secret,gh variablegh api ... --jq— har qanday API so'rovgh alias set— qisqa buyruqlar
Keyingi dars
55-dars: Git GUI — GitKraken, SourceTree, VS Code Git integration