Para quienes trabajamos con Bash y Git, tener un prompt que nos indique en qué rama estamos puede ser una gran ayuda para no perdernos en nuestros repositorios. Sin necesidad de instalar plugins complejos ni cambiar de shell, podemos personalizar nuestro prompt de Bash para que muestre esta información de forma sencilla y minimalista.
Lo primero que debemos saber es que Git suele instalar una serie de archivos útiles para este propósito, aunque su ubicación puede variar según la distribución o el sistema operativo. Normalmente, estos archivos están en directorios como /usr/share/git-core/contrib o /usr/local/share/git-core/contrib. Si no los encontramos, podemos descargarlos directamente del repositorio oficial de Git, en la carpeta contrib.
Entre estos archivos, destacan dos que nos interesan especialmente: git-completion.bash y git-prompt.sh. El primero nos permite habilitar un autocompletado inteligente para los comandos de Git en Bash, mientras que el segundo nos ayuda a mostrar la rama activa en el prompt.
Para activar el autocompletado, basta con localizar el archivo git-completion.bash en nuestro sistema y cargarlo con el comando source. Por ejemplo:
source /etc/bash_completion.d/git-completion.bash
A partir de ese momento, al escribir git y pulsar la tecla Tab, Bash nos sugerirá los subcomandos disponibles, como blame, bisect, checkout, switch, entre otros. Incluso completará nuestros alias personalizados, haciendo que trabajar con Git sea más fluido y rápido.
Pero lo que realmente queremos es que nuestro prompt muestre la rama Git activa. Para ello, debemos cargar también el archivo git-prompt.sh con source. Esto define una función llamada __git_ps1 que, cuando la invocamos, nos devuelve el nombre de la rama actual si estamos dentro de un repositorio Git, o nada si no lo estamos.
El prompt en Bash se controla mediante la variable de entorno PS1. Podemos modificarla para incluir la salida de __git_ps1 y así mostrar la rama directamente en la línea de comandos. Por ejemplo, podemos configurar el prompt para que muestre el usuario, el host, el directorio actual y la rama Git de esta manera:
export PS1='\u@\h:\w$(__git_ps1) \$ '
Aquí, \u es el nombre del usuario, \h el nombre del host, \w el directorio actual, y \$(__git_ps1) ejecuta la función que muestra la rama Git. El espacio y el símbolo $ al final indican que el prompt está listo para recibir comandos.
Al aplicar esta configuración, cuando estemos dentro de un repositorio Git, veremos algo así:
usuario@maquina:proyecto (main) $
Y si salimos del repositorio, el prompt simplemente no mostrará la rama, manteniendo la línea limpia.
Este método nos permite tener un entorno de trabajo más informativo sin complicaciones ni dependencias externas. Además, la función __git_ps1 tiene opciones avanzadas para mostrar símbolos o estados adicionales del repositorio, que podemos explorar según nuestras necesidades.
Con estos pasos, podemos personalizar nuestro Bash para que sea más útil y adaptado a nuestro flujo de trabajo con Git, manteniendo un estilo minimalista y eficiente.