Prompt de la terminal personalizado en carpetas de git con el intérprete Bash

Escrito por el .
gnu-linux planeta-codigo
Enlace permanente Comentarios

GNU

Linux

Uno de los sistemas de control de versiones más utilizado es Git. Bash es el intérprete de comandos por defecto en la mayoría de distribuciones GNU/Linux. A la hora de trabajar en la terminal y estando como directorio actual en un directorio que está bajo el control de versiones de git bash por defecto no muestra ninguna información del estado de los archivos en su repositorio en el símbolo del sistema o prompt.

El intérprete Zsh y Oh-My-Zsh ofrece mediante sus temas soporte para los repositorios de git modificando el símbolo del sistema para mostrar más información acerca del estado. En Bash también es posible añadir soporte para que muestre información como la rama actual en la que se está trabajando, si hay archivos modificados o no añadidos al control de versiones, si hay archivos en el stash y una comparación entre la rama actual y la del origen o upstream.

Prompt de la terminal por defecto Prompt de la terminal en carpeta git

Prompt de la terminal por defecto y en carpeta de git
  • * la presencia de este caracter indica que hay cambios en alguno de los archivos bajo el control de versiones.
  • + indica que hay archivos añadidos al stash
  • = indica que la rama está en el mismo estado que en upstream, en su lugar puede mostrarse el caracter > para indicar que la rama en local está por delante de la rama en remoto o mostrarse < para lo contrario.

El script necesario para añadir el soporte a repositorios git en Bash es git-prompt.sh. Una vez descargado su funcionalidad se personaliza con varias variables de entorno tal y como está documentado en el comentario al inicio de este script que se añaden en el archivo de perfil del usuario de inicio .bashrc. Añadidas unas variables de entorno que empiezan por GIT_PS1 y hecho el source del script junto con la utilización de la variable PROMPT_COMMAND en lugar de PS1 para posibilitar la información de estado con colores al estar en un directorio git se muestra el prompt del ejemplo anterior.

1
2
$ wget -O ~/.git-prompt.sh https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh

install.sh

Este es el archivo .bashrc completo de la distribución Arch Linux con el soporte para el script git-prompt.sh y algunas opciones personalizadas.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

alias ls='ls --color=auto'

#
GIT_PS1_SHOWDIRTYSTATE="true"
GIT_PS1_SHOWSTASHSTATE="true"
GIT_PS1_SHOWUNTRACKEDFILES="true"
GIT_PS1_SHOWUPSTREAM="true"
GIT_PS1_SHOWCOLORHINTS="true"
source ~/.git-prompt.sh

PS1='[\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;35m\]\h\[\033[00m\] \W]\$ '
PROMPT_COMMAND='__git_ps1 "[\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;35m\]\h\[\033[00m\] \W" "]\$ "'
bashrc

La documentación completa con todas las opciones de personalización están en las primeras líneas de comentario del script.


Comparte el artículo: