Home » Perzonalizar prompt de shell para Git
personalizar prompt de shell para git

Perzonalizar prompt de shell para Git

El trabajar con Git implica muchas veces movernos entre distintos directorios y subdirectorios de proyectos de código, ya sea en uno o más branches. De tanto cambiar entre ellas, a veces es fácil perderse y cometer errores tipeando comandos incorrectos en las rutas inesperadas.

Si eres usuario de Git y quieres personalizar tu prompt de Shell con información de branches entonces este post es para ti.

El trabajar con Git implica muchas veces movernos entre distintos directorios y subdirectorios de proyectos de código, ya sea en uno o más branches. De tanto cambiar entre ellas, a veces es fácil perderse y cometer errores tipeando comandos incorrectos en las rutas inesperadas.

Por eso, en este post te comparto algunos tips de cómo personalizar el prompt de nuestro Shell para una mejor visualización e identificación de directorios de Git.

1. Linux y BASH: opción 1

En el script personal de inicio de sesión BASH (~/.bashrc) agregamos una definición de función y la variable de entorno PS1 que le haga referencia:

git_prompt() {
  if git branch > /dev/null 2>&1
  then
    git status | grep -q "you are still merging" && suffix="|MERGING"
    git branch | grep '^*' | cut -c 3- | sed -e "s/^/ \(/" -e "s/$/$suffix\)/"
  fi
}
export PS1="[\u@\h \W\$(git_prompt)]\\$ "

Esto nos debería mostrar un prompt como este:

ejemplo de prompt bash sin colores

Opcionalmente, podemos darle algo de color, así:

git_prompt() {
  if git branch > /dev/null 2>&1
  then
    git status | grep -q "you are still merging" && suffix="|MERGING"
    git branch | grep '^*' | cut -c 3- | sed -e "s/^/ \(/" -e "s/$/$suffix\)/"
  fi
}
GREEN="\[\033[0;32m\]"
CYAN="\[\033[0;36m\]"
RED="\[\033[0;31m\]"
PURPLE="\[\033[0;35m\]"
BROWN="\[\033[0;33m\]"
LIGHT_GRAY="\[\033[0;37m\]"
LIGHT_BLUE="\[\033[1;34m\]"
LIGHT_GREEN="\[\033[1;32m\]"
LIGHT_CYAN="\[\033[1;36m\]"
LIGHT_RED="\[\033[1;31m\]"
LIGHT_PURPLE="\[\033[1;35m\]"
YELLOW="\[\033[1;33m\]"
WHITE="\[\033[1;37m\]"
RESTORE="\[\033[0m\]"
export PS1="[$GREEN\u@\h $LIGHT_BLUE\W$RED\$(git_prompt)$RESTORE]\\$ "

Lo cual hace lucir mucho mejor el prompt, como en esta imagen:

ejemplo de prompt bash con colores

2. Linux y BASH: opción 2

Esta otra opción requiere que accedamos al enlace de un repositorio Git de terceros, como el siguiente:

https://github.com/lyze/posh-git-sh

Dentro, está el archivo git-prompt.sh el cual debemos descargar y almacenar como un archivo oculto, como sigue:

cd $HOME
wget https://raw.githubusercontent.com/lyze/posh-git-sh/master/git-prompt.sh
mv git-prompt.sh .git-prompt.sh

Ahora, modificamos nuestro script ~/.bashrc como sigue:


GREEN="\[\033[0;32m\]"
CYAN="\[\033[0;36m\]"
RED="\[\033[0;31m\]"
PURPLE="\[\033[0;35m\]"
BROWN="\[\033[0;33m\]"
LIGHT_GRAY="\[\033[0;37m\]"
LIGHT_BLUE="\[\033[1;34m\]"
LIGHT_GREEN="\[\033[1;32m\]"
LIGHT_CYAN="\[\033[1;36m\]"
LIGHT_RED="\[\033[1;31m\]"
LIGHT_PURPLE="\[\033[1;35m\]"
YELLOW="\[\033[1;33m\]"
WHITE="\[\033[1;37m\]"
RESTORE="\[\033[00m\]"
# export PS1="[$GREEN\u@\h $LIGHT_BLUE\W$RED\$(git_prompt)$RESTORE]\\$ "
source $HOME/.git-prompt.sh
PROMPT_COMMAND='__posh_git_ps1 "$GREEN\u@\h $LIGHT_BLUE\W$RESTORE " "\\\$ ";'$PROMPT_COMMAND

Prestar atención a la línea que se ha comentado que corresponde a la opción 1 vista anteriormente. Eso lo hago para evitar conflictos con la opción 2.

Luego de recargar la sesión (source ~/.bashrc), el prompt luce como se muestra en la siguiente imagen:

prompt de bash alterno con mas opciones

Visualmente, también luce bien. Sin embargo, ahora se muestra un prompt bastante dinámico con símbolos y ciertas sintaxis especiales que tienen un significado especial, el mismo que está descrito en el archivo README.md del mismo repositorio Git mostrado antes, en la sección The Prompt.

También, en el mismo archivo README hay mucha más información de ejemplos y ajustes de configuración. Así que sí se requiere algo más de paciencia y lectura para sacar el máximo provecho a esta 2da opción de prompt Git para BASH.

3. Windows y PowerShell

En PowerShell también tenemos soporte para el mismo tipo de prompt Git que el mostrado en la opción 2.

Para ello, es necesario instalar el módulo posh-git como sigue:

Install-Module posh-git

Luego, nos aseguramos de crear un archivo profile.ps1 en un directorio como Documents\PowerShell usando un contenido como este:

Import-Module posh-git
$GitPromptSettings.DefaultPromptPath='$($hostname=$env:COMPUTERNAME.ToLower() ; $current=$(Split-Path -leaf -path (Get-Location)) ; Write-Output "$env:username@$hostname $current")'

Esto nos permite tener un prompt como se muestra en la siguiente imagen:

prompt de powershell optimizado para Git

¿Y qué te pareció estas alternativas para personalizar tu prompt de Shell para su uso con Git? Si te pareció útil, comenta y compártelo.

Post navigation

Deja un comentario

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *