Hay muchos comandos en Git y, junto con los parámetros, demasiadas combinaciones. Los alias permiten definir una serie de comandos que pueden ser usados en lugar de los nombres completos.
Así que ya sea porque quieres ahorrarte unas pocas teclas, mejorar tu experiencia de desarrollo o, simplemente, porque no quieres recordar todos los parámetros que necesitas para realizar cierta acción, los alias son una buena opción.
Vamos a revisar qué son, cómo crearlos, cómo usarlos y veremos algunos ejemplos útiles.
Los alias pueden ser sencillos atajos para comandos muy usados a complejas combinaciones de comandos con parámetros…
¿Cómo crear tu propio alias en Git?
Gitte permite crear tus propios alias fácilmente para comandos que usas habitualmente en tu proyecto con este sistema de control de versiones.
Para crear tu propio comando debes usar el comandogit configy ponerlo de la
siguiente manera:
$ git config --global alias.[nombre-del-alias] "comando a ejecutar"
También puedes añadir alias directamente editando el archivo de configuración de git. Para ello, ejecuta git config —list —show-originy edita el fichero según el ámbito donde quieres que se pueda usar tu alias (normalmenteglobal).
Pongamos un ejemplo real de alias. Imaginemos que queremos simplificar la sintaxis de git log. Vamos a aprovechar que git log —onelinemuestra los commits en una sola línea. Pero lo usamos tanto que no queremos recordarlo. Pues vamos a crear un alias.
$ git config --global alias.ll "log --oneline"
Ahora, podemos utilizar este nuevo alias de la siguiente forma:
$ git ll
31239c5 (HEAD -> main) Fix commit
578345d Probando nuevo log
Vamos a ver otro ejemplo, en este caso para recuperar el último commit de un repositorio. Para ello vamos a crear un alias llamadolast:
$ git config --global alias.last 'log -1 HEAD --stat'
Y podemos usarlo de la siguiente manera:
$ git last
commit ee9caa237c4ebd95f88a9106f4fd891569f22692(HEAD -> master, origin
/master, origin/HEAD)
Author: tu-usuario <miduga@gmail.com>
Date: Mon Jul 1213 :17:25 2021 +0200
Fix styles
assets/styles/global.css | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
El uso de alias puede facilitarte mucho la vida a la hora de trabajar con git. ¡Yo tengo al menos una docena de ellos!
Ten en cuenta que no puedes sobrescribir comandos de git. Por ejemplo, no puedes crear un alias con el nombre decommitya que éste ya existe. En el caso de que un alias tenga el nombre de un comando de git ya definido, se ignorará el alias (no recibirás un error al crearlo).
¿Puedo crear alias para comandos que ya existen?
Sí. Además de crear alias que sean compuestos con parámetros, también puedes simplemente renombrar los comandos que ya tiene git, de forma que sean más fáciles de usar.
$ git config --global alias.br branch
$ git config --global alias.ch checkout
$ git config --global alias.co commit
$ git config --global alias.st status
Ahora, podrías usar la forma corta de los comandos:
$ git br # git branch
$ git ch # git checkout
$ git co # git commit
$ git st # git status
Además, ten en cuenta que al usar un alias puedes usar parámetros. Por ejemplo, si quieres añadir un mensaje a uncommitusando el alias git colo puedes hacer de la siguiente manera:
$ git co -m "Add new feature"
¿Sabías que si escribes mal el comandocomit(con una m), Git te recordará cuál es
el comando más similar? Esto es genial, pero incluso puedes crearte un alias con
estos errores típicos para que no te preocupes en el futuro:git config --global
alias.comit commit.
¿Puedo crear un alias para un comando externo?
Sí. Aunque lo normal es crear un alias que sea un comando de git, en ocasiones puede ser interesante crear un alias para un comando que no sea exactamente de la línea de comandos de git pero que esté lo suficientemente relacionado como para que sea útil.
Por ejemplo, es posible que tengas un cliente visual de git y lo quieras abrir con git gui. Puedes hacerlo de la siguiente manera:
$ git config --global alias.gui '!sourcetree'
Fíjate que el comandosourcetreeviene precedido de una exclamación!. Esto significa que el comando será ejecutado como un comando de terminal (shell). Además, ten en cuenta que el comandosourcetreese ejecutará en el directorio raíz del repositorio, sin importar en qué carpeta del directorio de trabajo te encuentres.
Ya conoces git config. Con git config —listpuedes recuperar todas las configuraciones que has creado y ver, entre ellas, los alias que has creado. Sin embargo, si tu configuración global es muy grande, puedes tener problemas para leerla y distinguir los alias entre tantas otras cosas. Así que puedes usar el parámetro —get-regexppara filtrar la configuración y enfocarte en lo que te interesa.
# lista toda la configuración que contenga la palabra alias
$ git config --get-regexpalias
# más correcto, recupera las configuraciones que comienzan por alias
$ git config --get-regexp ^alias \.
¿Sabes lo mejor? Puedes crear un alias para mostrar la lista de alias que has creado. ¡Inception! Lo podríamos crear y usar de la siguiente manera:
$ git config --global alias.alias "config --get-regexp ^alias\."
# ahora podrás ejecutar el nuevo comando
$ git alias
alias.log log —oneline alias.alias config —get-regexp ^alias . alias.last log -1 HEAD —stat alias.bc switch -c
¿Cuáles son los mejores alias?
No creo que haya mejores o peores alias. Todo depende de la necesidad de cada persona y el uso que le dé a Git. Aunque podemos estar de acuerdo en una cosa: los mejores alias son los que van a hacer tu vida más fácil y va a simplificar tu uso de Git.
Para que te hagas una idea, en mi caso, no utilizo mucho los alias de git, ya que uso Oh My Zshy elplugin de git³⁴. Trae una decenas de alias para los comandos más comunes y para otros flujos de trabajo. Por ejemplo, usogstpara git statusygco para git checkout, entre otros.
Igualmente, para que no te vayas con las manos vacías te comparto algunos que he usado en algún momento o que sé que han sido útiles en algún momento para mis colegas de trabajo.
git graph
Te muestra de forma gráfica los cambios de un repositorio.
# creamos el alias para tener una vista gráfica de los cambios
$ git config --global alias.graph "log --all --graph --decorate --oneline"
# usamos el nuevo alias
$ git graph
* f4358d6(HEAD -> master) Add transparent border
* 06dc9de(origin/master, origin/HEAD) Fix styles
* a2c4852 Fix diviendo typo
* 75d4dc3 Improve contrast ratio
* 6971958 Use chromium-aws-lambda to make it work at Vercel
* 1f237b4 Merge branch 'master 'of github.com:tu-usuario/tu-usuario.dev
|
| * b60b708 Merge pull request # 64 from tu-usuario/imgbot
| |
| | * 9fabc2f(origin/imgbot) [ImgBot] Optimize images
* | | 0068778 Add more logging to lambda
|/ /
* | 848d316 Add some tweaks for reset icon
* | 1e51c7c Fix wrong behaviour on mobile
* | a1e963f Remove svg and improve article pagination
* | 7f3f273 Add preload for tracking script
|/
git undo
Te permite fácilmente deshacer los commits que hayas realizado, y que todavía no hayas guardado en el repositorio.
# creamos el alias para deshacer un commit
$ git config --global alias.undo "reset --soft HEAD^"
# deshacemos el último commit
$ git undo
Unstaged changes after reset: M app.js
git rank
Para mostrar una lista de los contribuidores con másmerges.
# creamos el alias "git rank"
$ git config --global alias.rank "shortlog -sn --no-merges"
# usamos el alias para mostrar el ranking
$ git rank
44 tu-usuario
11 d4nidev
9 codingwithdani
4 jonathandelgado
git fresh
¿Quieres empezar de nuevo? Si tienes claro que quieres descartar todos los cambios de archivos que tienes en tu directorio de trabajo y que no has grabado todavía… pero nunca te acuerdas de cómo usar git resety git cleanentonces este alias es para ti.
$ git config --global alias.fresh "\!git reset --hard HEAD && git clean-f -d"
Ten en cuenta que esto deshará todos los cambios que no has guardado (commit) y, también, los ficheros que hayas creado y que no eran parte del repositorio antes.
git bc
Si creas constantemente nuevas ramas en tu proyecto y quieres cambiar a ellas de forma rápida, puedes crearte un alias llamado git bcde branch change.
# alias para crear una rama y cambiar a ella
$ git config --global alias.bc "switch -c"
$ git bc cool-branch-name
Switched to a new branch 'cool-branch-name'
# para versiones de git anteriores sin soporte a git switch
$ git config --global alias.bc "checkout -b"
git br
Para mostrar una lista de ramas que tienes en tu repositorio en una lista con colores e información útil:
$ git config --global alias.branches "branch --format='%(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate"
Lo mejor de este alias es, además, revisar lo que estamos haciendo paso a paso.
Primero, ejecutamos el comando git branch.
Con el parámetro—format, estamos dando formato a la salida. Podemos usar algunas evaluaciones de variables especiales. Por ejemplo,%(refname:short)muestra el nombre de la rama.
%(color:yellow)nos permite cambiar el color de la salida. Para evitar que todo quede amarillo, evaluamos%(color:reset)para volver al color original.
Los demás campos creo que se explican por si solos sabiendo todo esto, pero puedes jugar con eliminarlos para determinar qué es cada uno.
Finalmente usamos el parámetro--sortparaordenar las ramas por fecha de su
último commit recibido.