¿Conoces GitHub CLI?
GitHub CLI es el proyecto oficial de GitHub para gestionar repositorios en GitHub desde la línea de comandos. Hasta ahora hub era el proyecto más conocido para gestionarlos de esta manera pero GitHub ya ha lanzado GitHub CLI mientras que hub muere lentamente.
Una vez instalado (es muy fácil), ya podemos usar el comando gh
para realizar acciones sobre el repositorio que estamos usando en ese momento en la carpeta actual.
$ gh --version
gh version 1.2.0 (2020-10-27)
https://github.com/cli/cli/releases/latest
Issues
Podemos mostrar un listado de issues en nuestro repositorio: (Nota: Aquí no aparecen colorines pero se ve más claro en pantalla)
$ gh issue list
Showing 30 of 291 open issues in cli/cli
#2487 Update all links to the labels in CONTRIBUTING.md about 1 day ago
#2485 Alerting on new release for every invocation is excessive (enhancement, help wanted) about 1 day ago
#2477 gh-repo-clone can't find Github project wikis (enhancement, good first issue, help wanted) about 1 day ago
#2475 PR creation with --assignee flag does not assign (bug, p2) about 1 day ago
#2471 gh gist edit completion (enhancement) about 15 hours ago
#2470 Config storage overhaul (help wanted, tracking issue) about 2 days ago
#2458 `gh repo info` (core, enhancement) about 4 days ago
Podemos usar multitud de parámetros para filtrar tal y como si estuviéramos en GitHub:
-a, --assignee string Filter by assignee
-A, --author string Filter by author
-l, --label strings Filter by labels
-L, --limit int Maximum number of issues to fetch (default 30)
--mention string Filter by mention
-m, --milestone number Filter by milestone number or `title`
-s, --state string Filter by state: {open|closed|all} (default "open")
-w, --web Open the browser to list the issue(s)
Además, con gh issue view
podemos ver directamente ese issue con su descripción. Si queremos verlo en el navegador, gh issue view --web
nos lo abrirá ahí mismo.
Otros subcomandos de issue
son create, reopen, close
o status
, también muy interesantes si queremos trabajar con los issues de GitHub desde el terminal.
Pull Requests
Es quizás el que más uso, gh pr
. Tiene varios subcomandos al igual que issue
:
gh pr list
: Muestra una lista de los últimos PRs. También podemos filtrar tal y como haríamos en la web
-a, --assignee string Filter by assignee
-B, --base string Filter by base branch
-l, --label strings Filter by labels
-L, --limit int Maximum number of items to fetch (default 30)
-s, --state string Filter by state: {open|closed|merged|all} (default "open")
-w, --web Open the browser to list the pull requests
gh pr create
. Lo uso muchísimo y ya prácticamente no abro PRs desde GitHub. Si no se le pasan parámetros, creará un nuevo PR de la rama actual contra la rama master
pero además nos hace preguntas como el título, el contenido y si por ejemplo queremos añadir etiquetas y abrirlo inmediatamente o continuar en el navegador. A mí me resulta muy cómodo.
? Title This is a test
? Body <Received>
? What's next? Add metadata
? What would you like to add? [Use arrows to move, space to select, <right> to all, <left> to none, type to filter]
> [ ] Reviewers
[ ] Assignees
[ ] Labels
[ ] Projects
[ ] Milestone
Al igual que con issue
, hay comandos para abrir, cerrar, ver o hacer merges o lo que nos dé la gana hacer pero estos dos de arriba son los que suelo utilizar más a menudo.
Alias
Un comando bastante útil es el de definir alias para distintos comandos. Tengo que decir que yo prefiero utilizar los alias de Bash en mi perfil de Bash pero puede que alguien le venga bien definirlos a nivel de GitHub CLI.
Para hacer un listado de las issues que tengo asignadas, tendría que ejecutar el siguiente comando:
gh issue list -a=igmoweb
Pero puedo crear un alias así:
gh alias set il 'issue list -a=igmoweb'
Y de esta forma, la próxima vez que quiera sacar el listado, sólo tendría que ejecutar la siguiente orden:
gh il
En mi caso prefiero definir alias de una sola palabra, por eso uso los alias de Bash. Tengo varios pero uno de ellos es crear un nuevo PR con gnpr
o gprl
para sacar una lista de PRs.
En fin, que GitHub CLI ofrece un montón de comandos (ver documentación) para realizar acciones sobre GitHub de forma programática. Si quieres aumentar la eficiencia a la que trabajas desde el terminal con GitHub creo que es una gran herramienta.