Git para la Bash

Un pequeño vídeo de regalo para quienes quieran configurar su prompt de Bash con los scripts de Git que permiten mostrar el nombre de la rama en Bash. La función __git_ps1 te permite mostrar la rama en la que estás, y es fácil de insertar en el PS1. Además, git-completion.

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.

Lista de reproducción
  1. 1
    ¿Qué es Git?
    4 minutos
  2. 2
    Cómo instalar Git
    9 minutos
  3. 3
    Creando tu primer commit
    9 minutos
  4. 4
    Qué es el staging area
    10 minutos
  5. 5
    Cómo deshacer modificaciones de archivos
    7 minutos
  6. 6
    Cómo deshacer un commit con reset
    7 minutos
  7. 7
    Cómo revertir un commit con revert
    7 minutos
  8. 8
    Introducción a las ramas
    6 minutos
  9. 9
    Cómo crear y modificar ramas
    6 minutos
  10. 10
    Commits bajo el workflow Feature Branch
    6 minutos
  11. 11
    Cómo fusionar ramas con merge
    6 minutos
  12. 12
    Fusiones conflictivas
    9 minutos
  13. 13
    Cómo construir alias
    7 minutos
  14. 14
    Más sobre conflictos
    9 minutos
  15. 15
    Etiquetas
    7 minutos
  16. 16
    Tags anotados
    9 minutos
  17. 17
    git stash: esconder cambios
    6 minutos
  18. 18
    Introducción a remotos
    5 minutos
  19. 19
    Pusheando a un remoto
    6 minutos
  20. 20
    Clonando y haciendo pull
    6 minutos
  21. 21
    Fetch y pull rebases
    8 minutos
  22. 22
    Rebase
    7 minutos
  23. 23
    Rebase interactivo
    6 minutos
  24. 24
    Master, main y otros nombres de rama
    9 minutos
  25. 25
    git switch
    9 minutos
  26. 26
    git-restore
    10 minutos
  27. 27
    git-grep
    11 minutos
  28. 28
    Gitignore
    11 minutos
  29. 29
    El flag --patch
    9 minutos
  30. 30
    git-apply y parches en bruto (advanced)
    9 minutos
  31. 31
    Merge octopus (advanced)
    9 minutos
  32. 32
    Conventional commits
    12 minutos
  33. 33
    Merge and squash (GitLab / GitHub...)
    6 minutos
  34. 34
    git merge --squash
    7 minutos
  35. 35
    git-bisect
    8 minutos
  36. 36
    git-blame
    6 minutos
  37. 37
    git-reflog
    10 minutos
  38. 38
    Git para la Bash
    11 minutos
  39. 39
    Submódulos (parte 1)
    7 minutos
  40. 40
    Submódulos (parte 2)
    10 minutos
  41. 41
    Otros clientes Git (último episodio)
    9 minutos