Configurazione
Installazione
brew install ghmacOS via Homebrew
sudo apt install ghDebian / Ubuntu
winget install GitHub.cliWindows via winget
conda install ghVia conda-forge
Autenticazione
gh auth login # login interattivo gh auth login --with-token < token.txt gh auth status # controlla stato auth gh auth refresh -s repo,gist # aggiungi scope
Configurazione
gh config set editor vim gh config set pager less gh config set git_protocol ssh gh config list
Repository
Comandi Repository
gh repo create my-app --public --clone gh repo clone owner/repo gh repo fork owner/repo --clone gh repo view owner/repo --web
Opzioni Repository
--public | --privateImposta la visibilità del repository
--template owner/repoCrea da repository template
--cloneClona dopo la creazione
--add-readmeInizializza con README
gh repo list ownerElenca repo per owner
gh repo delete owner/repoElimina repository (con conferma)
gh repo rename new-nameRinomina il repo corrente
gh repo archive owner/repoArchivia un repository
Issue
Gestire le Issue
gh issue create --title "Bug" --body "Dettagli" gh issue list --state open --label bug gh issue view 42 gh issue close 42 --reason completed
Opzioni Issue
--assignee @meAssegna a te stesso
--label bug,urgentAggiunge etichette
--milestone v2.0Imposta milestone
--project "Board"Aggiunge al progetto
gh issue edit 42Modifica issue interattivamente
gh issue reopen 42Riapre una issue chiusa
gh issue comment 42 -b "msg"Aggiunge commento alla issue
gh issue pin 42Fissa la issue al repo
Pull Request
Creazione e Gestione PR
gh pr create --title "feat: add auth" --body "..." gh pr create --fill # titolo/body dai commit gh pr list --state open gh pr view 123 --web
Revisione e Merge
gh pr checkout 123 # checkout branch PR gh pr diff 123 # visualizza diff PR gh pr review 123 --approve gh pr merge 123 --squash --delete-branch
Opzioni PR
--draftCrea come draft PR
--reviewer user1,user2Richiede revisori
--base mainImposta branch base
--merge | --squash | --rebaseStrategia di merge
--autoAbilita auto-merge quando i check passano
--delete-branchElimina branch dopo il merge
gh pr ready 123Marca draft PR come pronta
Actions
Comandi Workflow
gh run list # esecuzioni recenti gh run view 12345 # dettagli esecuzione gh run view 12345 --log-failed # log step falliti gh run watch 12345 # stato in tempo reale
Avvio e Gestione
gh workflow run deploy.yml --ref main gh workflow list gh workflow view deploy.yml gh run rerun 12345 --failed # riesegui job falliti
Opzioni Actions
-f key=valuePassa input a workflow_dispatch
--jsonOutput come JSON
-b branchFiltra per branch
gh run download 12345Scarica artifact dell'esecuzione
gh cache listElenca le cache di Actions
gh cache delete KEYElimina una voce cache
Release
Gestire le Release
gh release create v1.0.0 --generate-notes gh release create v1.0.0 ./dist/*.tar.gz gh release list gh release view v1.0.0
Opzioni Release
--title "Release v1.0"Imposta il titolo della release
--notes "Changelog"Imposta le note inline
--notes-file CHANGELOG.mdNote da file
--generate-notesGenera automaticamente dai commit
--draftCrea come bozza
--prereleaseMarca come prerelease
--latestMarca come ultima release
gh release download v1.0.0Scarica asset della release
gh release delete v1.0.0Elimina una release
gh release edit v1.0.0Modifica metadati release
Gist
Comandi Gist
gh gist create file.py -d "Il mio snippet" gh gist create file1.js file2.js # gist multi-file gh gist list gh gist view
Opzioni Gist
-d "description"Imposta la descrizione del gist
--publicCrea gist pubblico (default: segreto)
--webApri gist nel browser
gh gist edit <id>Modifica file del gist
gh gist clone <id>Clona il gist localmente
gh gist delete <id>Elimina un gist
API
Chiamate API
gh api repos/owner/repo gh api repos/owner/repo/issues --method POST \ -f title="Bug" -f body="Dettagli" gh api graphql -f query='{ viewer { login } }'
Formattazione Output
gh api repos/owner/repo --jq '.stargazers_count' gh api repos/owner/repo --template '{{.full_name}}' gh pr list --json number,title --jq '.[].title'
Opzioni API
--method GET|POST|PUT|DELETEMetodo HTTP
-f key=valueImposta campo stringa
-F key=@fileImposta campo da file
--jq 'expression'Filtra JSON con sintassi jq
--template 'tmpl'Formatta con template Go
--paginateScarica tutte le pagine
-H 'Accept: ...'Imposta header personalizzato
Alias
Gestire gli Alias
gh alias set co 'pr checkout' gh alias set bugs 'issue list --label bug' gh alias set last 'run list -L 1' gh alias list
Alias Avanzati
# Alias con comando shell gh alias set --shell pv 'gh pr view --json url --jq .url | pbcopy' # Elimina alias gh alias delete co
Consigli sugli Alias
gh alias set name 'cmd'Crea alias semplice
--shellL'alias viene eseguito via shell (supporta pipe)
gh alias listMostra tutti gli alias definiti
gh alias delete nameRimuove un alias
Pattern Comuni
Workflow Quotidiano
gh issue list --assignee @me # mie issue aperte gh pr status # PR che richiedono attenzione gh pr checks 123 # stato CI per PR gh run list -b main -L 5 # esecuzioni CI recenti
Ricerca
gh search repos --language rust --stars ">1000" gh search issues --repo owner/repo "memory leak" gh search prs --state open --review required
Flag Utili
--json field1,field2Output campi specifici come JSON
--jq 'expr'Filtra output JSON
-L NLimita risultati a N elementi
--webApri risultato nel browser
-R owner/repoPunta a un repository specifico
GH_TOKEN=xxxAuth via variabile d'ambiente