Configurar la twig de git en el prompt

He actualizado mi file bash para que se muestre la twig actual de Git siguiendo las instrucciones aquí . Lo que terminé usando es

PS1="\u@\h \W \$(__git_ps1)\$ " 

Sin embargo…

  1. No puedo ver para poder replace la (branch) a [branch] , es decir, mostrar el nombre de la twig entre corchetes en lugar de paréntesis.
  2. La versión original tenía colors:

     PS1="\[$GREEN\]\t\[$RED\]-\[$BLUE\]\u\[$YELLOW\]\[$YELLOW\]\w\[\033[m\]\[$MAGENTA\]\$(__git_ps1)\[$WHITE\]\$ " 

    pero cuando utilicé esto no vi ningún color. ¿Cómo podría ver los colors y cuál sería una configuration estándar para usar?

1 – Delimitar el nombre de la twig con corchetes en lugar de parens

Aquí hay un pasaje relevante del file .git-prompt.sh (que, en las versiones modernas de Git, contiene la definición de la function __git_ps1 ):

 # 3a) Change your PS1 to call __git_ps1 as # command-substitution: # Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' # ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' # the optional argument will be used as format string. 

__git_ps1 acepta un argumento opcional que puede usar para personalizar el formatting de la cadena. En tu caso, debes usar

 PS1="\u@\h \W \$(__git_ps1 '[%s]')\$ " 

2 – Uso de colors

Puede usar colors como en el código de su pregunta, pero debe asegurarse de que las variables en cuestión estén definidas. Coloque las siguientes líneas en algún lugar de su file ~/.bashrc :

 RED=$(tput setaf 1) GREEN=$(tput setaf 2) YELLOW=$(tput setaf 3) BLUE=$(tput setaf 4) MAGENTA=$(tput setaf 5) WHITE=$(tput setaf 7) RESET=$(tput setaf 0) 

Después de get su file ~/.bashrc , podrá usar esos colors. Por ejemplo, aquí hay una versión simplificada de su post con el nombre de la twig actual (y los corchetes circundantes) resaltados en rojo:

 PS1="\W \[$RED\$(__git_ps1 '[%s]')\]\[$RESET\$\] " 

enter image description here

  1. La function __git_ps1 que está utilizando toma una cadena de formatting como argumento. De modo que puede pasar lo que quiera con %s donde desee que aparezca el nombre de la twig. Por ejemplo:

     PS1="\u@\h \W \$(__git_ps1 '[%s]')\$ 

Ninguna pista sobre los colors, lo siento.

Esto funciona:

 function parse_git_dirty { [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "*" } function parse_git_branch { git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/" } PS1="\[$Blue\][\[$Cyan\]\d\[$Blue\]] " # Display date PS1=$PS1"\[$Yellow\]\@:" # Display time PS1=$PS1"\[$BGreen\]\w" # Display a green pwd PS1=$PS1"\[$BCyan\]"'$(parse_git_branch)' # Display a cyan git-branch PS1=$PS1"\[$Color_Off\]$ " # Turn off color and end prompt export PS1=$PS1 

produce algo como esto:

 [Thu Sep 18] 12:44 PM:~/repos/test[master*]$