GitHub en el terminal

Tengo que confesarte, sin ningún tipo de reparo, que inicialmente esto de tener un cliente de GitHub para el terminal, no lo terminaba de entender. Evidentemente, no lo terminaba de entender, porque hasta hace realmente poco tiempo, no lo había probado. Una vez probado el cliente de GitHub en el terminal, mi punto de vista ha cambiado sensiblemente.

Por supuesto, que no me refiero específicamente al cliente oficial de GitHub, tampoco había probado ningún otro tipo de cliente no oficial para esta plataforma. Simplemente no me había llamado la atención este tipo de solución. O mejor dicho, no lo terminaba de entender. No sabía, o no entendía, que me podía aportar esta herramienta.

Pero ahora ya lo he comprendido, está claro lo que me puede aportar el cliente de GitHub para el terminal, simplemente comodidad. Se trata de una herramienta que, simplemente, te puede hacer la vida más fácil.

GitHub en el terminal

GitHub en el terminal

¿En que consiste el cliente de GitHub para el terminal? Simplemente se trata de acercarte los conceptos mas habituales de GitHub, para que te resulte mas sencillo trabajar con ellos directamente desde el terminal, sin que necesites recurrir a un interfaz gráfico.

¿A que conceptos me refiero?. Se trata de poder trabajar con pull requests, issues, releases, gist y por supuesto, es ideal para clonar repositorios, y ese tipo de operaciones que sueles hacer con tanta frecuencia.

Como tener GitHub en el terminal

Por supuesto, que el primer paso con el que te tienes que enfrentar es con la instalación del cliente. En el caso de Ubuntu y derivados, es tan sencillo como ejecutar las siguientes instrucciones en un terminal,

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0
sudo apt-add-repository https://cli.github.com/packages
sudo apt update
sudo apt install gh

Para el caso de CentOS, Fedora, Red Hat, las instrucciones son estas otras,

sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh

Autenticación

Una vez instalado el cliente, el siguiente paso es autenticarte, ya sea en GitHub, o en el caso de que estés utilizando un versión empresarial, en el servidor correspondiente. Para ello, simplemente ejecuta gh auth login, o en el caso de la versión empresarial, gh auth login --hostname <hostname>.

Configuración

El siguiente paso es configurar el cliente, para ello tienes que definir algunos parámetros como es el editor, el protocolo que quieras utilizar, o incluso crear tus propias llamadas a la API personalizadas.

Para configurar tu editor preferido debes utilizar gh config set editor <editor>. Si quieres saber el editor que tienes configurado, la instrucción que debes utilizar es gh config get editor. En mi caso, como te puedes imaginar, he configurado Vim.

Pero no solo puedes configurar el editor, también puedes configurar otros parámetros como son el protocolo a utilizar para git clone y git push, que por defecto está establecido a https. O también es posible definir que la herramienta sea interactiva o no lo sea.

En el caso de que estés utilizando Bash, puedes realizar el autocompletado añadiendo la siguiente instrucción en tu ~/.bashrc,

eval "$(gh completion -s bash)"

En el caso de que utilices otra shell, puedes definirla cambiando el parámetro que viene detrás de la -s, con zsh, fish, powershell.

Extendiendo gh

Existen diferentes opciones para extender la funcionalidad de gh, y no solo extenderla, sino también adaptarla a tus necesidades. Así, por ejemplo,

  • Puedes crear alias utilizando gh alias set
  • Es posible personalizar las consultas vía API utilizando gh api
  • También puedes utilizar las variables de entorno.

Uso y funcionamiento

Por simplificar, gh está organizado en 10 nombres principales sobre los que puedes realizar diferentes acciones. ¿A que me refiero con nombres?. Básicamente, alias, api, auth, completion, config, gist, issue, pr, release y repo.

Sobre cada uno de estos nombres puedes realizar diferentes acciones o verbos. Así, encontrarás que hay algunos verbos, que son comunes para casi todos los nombres, como pueden ser list, create o view, mientras que otros son específicos del nombre en concreto.

Trabajando con gist

¿Que es gist? básicamente se trata de una forma de compartir pequeñas porciones de código, los snippets. Desde luego que no se tiene que circunscribir exclusivamente al código, también puede ser texto. En cuanto a lo de compartir, indicar, que no tiene que ser necesariamente con otros. Este pedazo de código, lo puedes compartir contigo mismo exclusivamente, es decir, que sea privado; esto ya de pende exclusivamente de ti.

Así, los verbos que tienes disponibles en gh para trabajar con gist son create, edit, list y view. Para crear y editar utilizarás el editor que hayas configurado previamente, mientras que el listado y la visualización, funcionan exactamente como si hicieras un cat. Por supuesto, te lista tanto tus gist públicos como los que son privados.

Cada uno de los verbos mencionados anteriormente, tiene sus correspondientes opciones o modificadores. Así, por ejemplo, en el caso de listar los gist, puede listar únicamente los públicos o los privados. Lo mismo te puedo decir a la hora de crear tus gist con gh, puedes añadir diferentes opciones como son la descripción, el nombre de un archivo o definirlo como público, porque en otro caso, por defecto son privados.

Issues

Otra de las operativas habituales al trabajar con un repositorio en GitHub es lidiar con issues. De nuevo, gh te lo pone realmente fácil, porque te da una serie de verbos con los que puedes,

Cada uno de los verbos mencionados anteriormente, tiene sus correspondientes opciones o modificadores. Así, por ejemplo, en el caso de listar los gist, puede listar únicamente los públicos o los privados. Lo mismo te puedo decir a la hora de crear tus gist con gh, puedes añadir diferentes opciones como son la descripción, el nombre de un archivo o definirlo como público, porque en otro caso, por defecto son privados.

Así, la primera operación que puedes realizar es revisar todos los gist que tienes abiertos en el momento. Para ello, simplemente ejecuta la instrucción gh issue list. La cuestión es que solo te mostrará los que tienes abiertos en el momento. Si quieres ver los cerrados, tienes que utilizar la opción gh issue list -s closed.

El verbo list al igual que otros verbos, tiene diferentes opciones como por ejemplo, la que te acabo de indicar, o también la opción -w para que te muestre el listado de issues directamente en la web. En este sentido, al igual que con otros verbos, puedes utilizar la opción -h para mostrar la ayuda, es decir, gh issue list -h.

En el caso particular de list, para mostrar los issues, puedes filtrar por diferentes parámetros, como es, a quien está asignado, por autor, por etiqueta, por mención, por título, por estado. Estos filtros son realmente interesantes de utilizar, sobre todo si tienes un proyecto con un número importante de issues.

Gestión de pull requests

Otro de los activos que tienes que gestionar en un repositorio en GitHub, son los pull request. En este caso, esto lo puedes hacer, de nuevo, desde la línea de comandos con gh pr. Indicarte, al igual que para el caso de los issue, que la siempre puedes recurrir a la opción -h para conocer todas las posibilidades que te ofrece la herramienta.

En el caso de los pull request, la cantidad de acciones que puedes realizar, es bastante superior a lo que has visto hasta el momento. Además de listar, ver o conocer el estado de un pull request, tienes algunas opciones adicionales mas que interesantes,

  • checkout te permite revisar cualquier pull request de forma local, incluyendo los forks utilizando únicamente el número del pull request. Por ejemplo,
$ gh pr list

Showing 2 of 2 open pull requests in atareao/cpu-g

#29  feat(Investigator): replace classic xorg vers...  omgitsaheadcrab:xorg-server-version
#28  fix(distro.get_distro): bug when no VERSION s...  omgitsaheadcrab:distro-version-fix

$ gh pr checkout 28

Y solo te quedaría revisar los cambios que hay con respecto a master, que lo podrías ejecutar con git diff master. Aunque esto mismo lo puedes hacer utilizando gh pr diff 28, sin necesidad de hacer un checkout del pull request.

  • merge con esta opción puedes hacer fácilmente un merge del pull request. Cuando lo hagas te preguntará como quieres hacerlo.
  • list, este lo has visto anteriormente, y se utiliza para listar todos los pull request existentes.
  • diff te permite ver los cambios respecto a un determinado pull request sin necesidad de descargarlo.
  • create con esta opción puedes crear un pull request directamente desde el terminal.
  • close justo la acción contraria a la anterior. Con esta opción puedes cerrar un pull request.

Existen otras opciones para trabajar con pull request. Te recomiendo que recurras a la ayuda man para dar un buen repaso a todas ellas, o simplemente a las que vayas utilizando.

Gestionando releases

Al igual que has visto con las otros nombres, también es sencillo trabajar con releases utilizando el cliente de GitHub. Así, básicamente, tienes varios verbos o acciones comunes a los nombres que has visto anteriormente, como list, view y luego tienes los propios correspondientes a la gestión de las releases como create, delete, download o upload.

Trabando con repositorios

Por último, y como no podía ser de otra manera, también tienes la opción de trabajar y gestionar repositorios utilizando esta herramienta. Para ello tienes cuatro verbos básicos como con,

  • clone para clonar un repositorio
  • create te va a permitir crear un repositorio nuevo
  • fork para hacer un fork de un repositorio existente
  • view para ver las características y propiedades de un repositorio.

Conclusión

¿Prefieres utilizar un interfaz gráfico para trabajar con Git?¿prefieres utilizar el terminal?. Esto es como todo, cada uno se maneja mejor con una o con otra herramienta. Hay quien con el terminal se desenvuelve como pez en el agua, y a quien esto le supone un verdadero martirio.

Sin embargo, si estás acostumbrado a trabajar con Git en el terminal, desde luego, tener una herramienta como el cliente oficial de GitHub para el terminal seguro que te supone una verdadera ventaja, porque simplemente necesitas incorporarlo a tu flujo de trabajo.


Más información

Imagen de portada de Richy Great en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *