GitHub CLI — gh tool bilan terminaldan GitHub boshqarish

~15 daq · Git · Amaliy va Professional mavzular

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 variable
  • gh api ... --jq — har qanday API so'rov
  • gh alias set — qisqa buyruqlar

Keyingi dars

55-dars: Git GUI — GitKraken, SourceTree, VS Code Git integration