Configuración
Instalación
brew install ghmacOS con Homebrew
sudo apt install ghDebian / Ubuntu
winget install GitHub.cliWindows con winget
conda install ghCon conda-forge
Autenticación
gh auth login # login interactivo gh auth login --with-token < token.txt gh auth status # verificar estado de auth gh auth refresh -s repo,gist # agregar scopes
Configuración
gh config set editor vim gh config set pager less gh config set git_protocol ssh gh config list
Repos
Comandos de repositorio
gh repo create my-app --public --clone gh repo clone owner/repo gh repo fork owner/repo --clone gh repo view owner/repo --web
Opciones de repo
--public | --privateEstablecer visibilidad del repositorio
--template owner/repoCrear desde repositorio plantilla
--cloneClonar después de crear
--add-readmeInicializar con README
gh repo list ownerListar repos de un propietario
gh repo delete owner/repoEliminar repositorio (con confirmación)
gh repo rename new-nameRenombrar repo actual
gh repo archive owner/repoArchivar un repositorio
Issues
Gestionar issues
gh issue create --title "Bug" --body "Details here" gh issue list --state open --label bug gh issue view 42 gh issue close 42 --reason completed
Opciones de issue
--assignee @meAsignar a ti mismo
--label bug,urgentAgregar etiquetas
--milestone v2.0Establecer milestone
--project "Board"Agregar a proyecto
gh issue edit 42Editar issue de forma interactiva
gh issue reopen 42Reabrir issue cerrado
gh issue comment 42 -b "msg"Agregar comentario al issue
gh issue pin 42Fijar issue en el repo
Pull Requests
Crear y gestionar PRs
gh pr create --title "feat: add auth" --body "..." gh pr create --fill # título/body desde commits gh pr list --state open gh pr view 123 --web
Revisar y hacer merge
gh pr checkout 123 # obtener rama del PR gh pr diff 123 # ver diff del PR gh pr review 123 --approve gh pr merge 123 --squash --delete-branch
Opciones de PR
--draftCrear como PR borrador
--reviewer user1,user2Solicitar revisores
--base mainEstablecer rama base
--merge | --squash | --rebaseEstrategia de merge
--autoHabilitar auto-merge cuando pasen los checks
--delete-branchEliminar rama tras el merge
gh pr ready 123Marcar PR borrador como listo
Actions
Comandos de workflow
gh run list # ejecuciones recientes gh run view 12345 # detalles de ejecución gh run view 12345 --log-failed # logs de steps fallidos gh run watch 12345 # estado en tiempo real
Activar y gestionar
gh workflow run deploy.yml --ref main gh workflow list gh workflow view deploy.yml gh run rerun 12345 --failed # re-ejecutar jobs fallidos
Opciones de Actions
-f key=valuePasar entrada al workflow_dispatch
--jsonSalida como JSON
-b branchFiltrar por rama
gh run download 12345Descargar artefactos de la ejecución
gh cache listListar cachés de Actions
gh cache delete KEYEliminar una entrada de caché
Releases
Gestionar releases
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
Opciones de release
--title "Release v1.0"Establecer título del release
--notes "Changelog here"Establecer notas del release en línea
--notes-file CHANGELOG.mdNotas desde archivo
--generate-notesAuto-generar desde commits
--draftCrear como borrador
--prereleaseMarcar como pre-release
--latestMarcar como último release
gh release download v1.0.0Descargar assets del release
gh release delete v1.0.0Eliminar un release
gh release edit v1.0.0Editar metadatos del release
Gists
Comandos de gist
gh gist create file.py -d "My snippet" gh gist create file1.js file2.js # gist de múltiples archivos gh gist list gh gist view
Opciones de gist
-d "description"Establecer descripción del gist
--publicCrear gist público (por defecto: secreto)
--webAbrir gist en el navegador
gh gist edit <id>Editar archivos del gist
gh gist clone <id>Clonar gist localmente
gh gist delete <id>Eliminar un gist
API
Hacer llamadas a la API
gh api repos/owner/repo gh api repos/owner/repo/issues --method POST \ -f title="Bug" -f body="Details" gh api graphql -f query='{ viewer { login } }'
Formatear salida
gh api repos/owner/repo --jq '.stargazers_count' gh api repos/owner/repo --template '{{.full_name}}' gh pr list --json number,title --jq '.[].title'
Opciones de API
--method GET|POST|PUT|DELETEMétodo HTTP
-f key=valueEstablecer campo de cadena
-F key=@fileEstablecer campo desde archivo
--jq 'expression'Filtrar JSON con sintaxis jq
--template 'tmpl'Formatear con plantilla Go
--paginateObtener todas las páginas
-H 'Accept: ...'Establecer cabecera personalizada
Alias
Gestionar 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 avanzados
# Alias con comando shell gh alias set --shell pv 'gh pr view --json url --jq .url | pbcopy' # Eliminar alias gh alias delete co
Consejos sobre alias
gh alias set name 'cmd'Crear alias simple
--shellEl alias se ejecuta con shell (admite tuberías)
gh alias listMostrar todos los alias definidos
gh alias delete nameEliminar un alias
Patrones comunes
Flujo diario de trabajo
gh issue list --assignee @me # mis issues abiertos gh pr status # PRs que necesitan atención gh pr checks 123 # estado de CI para PR gh run list -b main -L 5 # ejecuciones de CI recientes
Búsqueda
gh search repos --language rust --stars ">1000" gh search issues --repo owner/repo "memory leak" gh search prs --state open --review required
Flags útiles
--json field1,field2Salida de campos específicos como JSON
--jq 'expr'Filtrar salida JSON
-L NLimitar resultados a N elementos
--webAbrir resultado en el navegador
-R owner/repoApuntar a un repositorio específico
GH_TOKEN=xxxAutenticar con variable de entorno