Acelera tu Terminal: Atajos de PowerShell Esenciales

Abdiel Martinez |

Atajos de PowerShell para gestión de ramas Git, scripts Yarn, clonado SSH. Tips de terminal para desarrolladores Windows.

He notado como algunos desarrolladores con mucha experiencia suelen tiener un arsenal de atajos y alias configurados en sus terminales. Después de todo, cuando pasas horas escribiendo los mismos comandos una y otra vez (git pull, git checkout develop, yarn dev...), cada pulsación de tecla que te ahorras es una pequeña victoria. 🏆

Sin embargo, la mayoría de las guías y configuraciones que encontraba estaban pensadas para entornos de Linux o Mac con Zsh o Bash. Como usuario de Windows que uso PowerShell como mi terminal principal, sentía que ya me hacían faltaba algunos atajos. Así que decidí crear mi propia colección de atajos, y compartir mi granito de arena para todos aquellos que, como yo, desarrollan en el ecosistema de Windows.

¿Cómo empezar? La magia del Perfil de PowerShell

Para que estos atajos estén siempre disponibles, debemos agregarlos a nuestro archivo de perfil de PowerShell. Este es un script que se ejecuta cada vez que iniciamos una nueva sesión de terminal.

Para abrirlo, simplemente ejecuta este comando en tu terminal:

$ code $PROFILE

(Asumiendo que tienes VSCode instalado y configurado en tu PATH. Si no, puedes usar notepad $PROFILE).

Una vez que tengas el archivo abierto, puedes pegar las funciones y alias que te parezcan útiles. En este artículo repasare solo algunos de los atajos más destacados. Te invito a que revises el repositorio completo con todos los alias y sus implementaciones en: https://github.com/Anb98/powershell-comand-alias

Mis Atajos Favoritos para Git

Git es la herramienta que más uso en mi día a día, así que aquí es donde más he invertido tiempo. No voy a listarlos todos los alias que he creado, pero sí quiero destacar dos que me encantan.

gsync: Sincronizando ramas sin dolor

¿Cuántas veces te ha pasado esto? Estás trabajando en una feature-branch y necesitas traer los últimos cambios de develop. El proceso manual es tedioso:

  1. git stash (si tienes cambios)
  2. git checkout develop
  3. git pull
  4. git checkout feature-branch
  5. git merge develop
  6. git stash pop

Con el alias gsync, todo ese ritual se reduce a un solo comando. Simplemente lo ejecutas desde tu rama de trabajo y él se encarga de todo el proceso.

# Estando en la rama 'my-feature'  
$ gsync

¡Y listo! Tu rama ahora tiene lo último de develop. 🤩

gprune: Manteniendo tu repositorio limpio

Después de varias semanas en un proyecto, mi lista de ramas locales parece un cementerio de features olvidadas. Recordar cuáles ya se han fusionado y borrarlas una por una es un fastidio.

Aquí es donde entra gprune. Este comando elimina todas las ramas locales que ya han sido fusionadas y que no sean main, master, develop o staging. Es como pasar la aspiradora por tu repositorio y dejarlo limpio de ramas obsoletas. Además, no tienes que preocuparte por perder tus avances: el comando no se ejecutará en tu rama actual, asegurando que tu trabajo esté a salvo.

# Ejecutas esto y ves cómo desaparecen decenas de ramas viejas  
$ gprune

Atajos para Infisical

Como mencioné en mi artículo anterior sobre cómo dejé de perder mis .env, utilizo Infisical para gestionar mis variables de entorno de forma segura y centralizada. Para no tener que escribir infisical run \-- cada vez, creé estos atajos:

  • irun: Ejecuta cualquier comando con las variables de Infisical. Ejemplo: irun yarn dev que seria equivalente a escribir: infisical run -- yarn dev.
  • irunp e iruns: Hacen lo mismo pero para los entornos de prod y staging respectivamente que seria como escribir: infisical run --env=prod -- y infisical run --env=staging -- .

Te invito a leer el artículo si quieres saber más sobre cómo Infisical puede salvarte de más de un dolor de cabeza. 🤫

Un pequeño empujón para Yarn

Estos son simples pero efectivos. ¿Para qué escribir yarn dev o yarn start cuando puedes escribir yd o ys? Son pequeños ahorros que, sumados, marcan la diferencia.

Un Vistazo a la Clonación con Múltiples Cuentas

En mi caso, he configurado mi computadora con dos llaves SSH distintas para interactuar con GitHub: una para mi cuenta del trabajo y otra para mis repositorios personales. Esto me permite mantener mis identidades completamente separadas.

Para facilitar esto, creé los alias gclonew (Git Clone Work) y gclonep (Git Clone Personal). Asi podría por ejemplo ejecutar:

$ gclonep Anb98/blog

De esta manera estaría utilizando la clave SSH correcta para cada cuenta, evitando cualquier conflicto.

¿Y cómo recuerdo todo esto? lsa al rescate

Al principio, puede ser difícil recordar todos los nuevos alias. Por eso, el último comando que creé fue lsa (por List Aliases). Al ejecutarlo, te muestra una tabla con todos los atajos personalizados que has definido, su comando original y una breve descripción. ¡Tu propia hoja de trucos integrada en la terminal! 📜

$ lsa

📜 Custom Aliases Defined in this Profile:

Alias   Original Command                Description
-----   ----------------                -----------
gpl     git pull                        Downloads the latest changes from the remote repository.
gpsh    git push                        Pushes your local commits to the remote repository.
gst     git status                      Displays the current status of the repository.
gss     git stash                       Temporarily saves changes that are not ready for a commit.
gsp     git stash pop                   Applies the latest "stash" and removes it from the list.
gch     git checkout <branch>           Switches to the specified branch.
gcd     git checkout develop            Quickly switches to the `develop` branch.
gnb     git checkout -b <branch>        Creates and switches to a new branch.
gsync   Function                        Synchronizes the current branch with the latest changes from `develop`.
gprune  Function                        Deletes all local branches except protected ones.
irun    infisical run -- <command>      Runs a command using Infisical environment variables.
irunp   infisical run --env=prod -- <command> Runs a command with Infisical production environment.
iruns   infisical run --env=staging -- <command> Runs a command with Infisical staging environment.
y       yarn                            Base alias for yarn. Allows `y add <package>`.
yd      yarn dev                        Starts the development server.
ys      yarn start                      Runs the project `start` script.
gclonew git clone workgit:<repo>        Clones a repository from the work remote.
gclonep git clone personalgit:<repo>    Clones a repository from the personal remote.
lsa     Function                        Displays this list of custom aliases.

Espero que esta pequeña guía te haya dado algunas ideas para empezar a personalizar tu propio entorno de PowerShell. La verdadera belleza de esto es que puedes adaptarlo 100% a tus necesidades.

Y ahora te pregunto a ti, ¿qué otros atajos se te ocurren o cuáles usas en tu día a día que consideres imprescindibles? Compártelo en los comentarios, ¡me encantaría leer tus ideas!