web-dev-qa-db-fra.com

L'affichage du nom de la branche git dans l'invite ne fonctionne pas à l'écran

J'ai mis à jour mon fichier .bashrc comme suit:

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

Cela fonctionne juste trouver et je peux voir mon nom de branche dans l'invite. Cependant, quand je lance "écran", je reçois 

"-bash: __git_ps1: commande introuvable"

Quelle peut en être la raison?

23
Ohad

Cet article de blog explique que vous devez ajouter la ligne source /etc/bash_completion.d/git avant de pouvoir utiliser __git_ps1.

Voici l'exemple complet:

source /etc/bash_completion.d/git  
export PS1='\w$(__git_ps1 "(%s)") > '

Cela permet également l'auto-complétion pour les branches.

En utilisant cette mise en forme, votre invite ressemblera (sans colorer):

~/my-repo(master) > 
28
SeriousM

Je trouve plus propre de modifier l'invite existante au lieu d'en définir une nouvelle. L'extrait de code suivant ajoute le nom de la branche git à l'invite existante ($ PS1). Vous pouvez ajouter l'extrait suivant au fichier ~/.bashrc:

source /etc/bash_completion.d/git (for Ubuntu 12.04 or less)
source /etc/bash_completion.d/git-Prompt (for Ubuntu 13.04 and higher)
PS1=$PS1'$(__git_ps1 "(%s) ")'

Si vous souhaitez que le nom de la branche soit en couleur, vous pouvez également le faire: Nous ajoutons ceci à la chaîne interne de la fonction git_ps1 et réinitialisons la couleur en utilisant\e [0m après. Les crochets sont nécessaires pour indiquer que des caractères "spéciaux" sont insérés.

PS1=$PS1'$(__git_ps1 "\[\e[0;32m\](%s) \[\e[0m\]")'

Beaucoup d'autres définitions de couleurs peuvent être trouvées ici

24
msteiger

Le problème est que bash doit être exécuté en tant que shell de connexion pour que cette fonction soit disponible dans la configuration par défaut de cygwin. Si vous exécutez bash dans une session cygwin, vous aurez le même problème. Pour que screen puisse exécuter bash en mode connexion, ajoutez cette ligne à votre fichier ~/.screenrc:

Shell -bash
8
Chronial
# Add following line to /.bashrc to show Git branch name in ssh Prompt
PS1='\[\033[0;31m\]\w\[\033[0;33m\]$(__git_ps1)\[\e[0m\]$ '

\[\033[0;31m\] est rouge

\[\033[0;33m\] est jaune 

\[\e[0m\] est normal

7
Mru

ajoutez source ~/.bash_profile dans .bashrc.

Avait le même problème et cela a fonctionné pour moi.

3
darksky
root:~/project#  -> root:~/project(dev)# 

ajoutez le code suivant à la fin de votre ~/.bashrc 

force_color_Prompt=yes
color_Prompt=yes
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_Prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_Prompt force_color_Prompt
0
Ali Alp

Si vous n'avez pas __git_ps1, vous pouvez utiliser

git branch --contains HEAD 2>/dev/null

Il affiche la même chose que __git_ps1.

Et si vous créez un alias comme celui-ci:

alias __git_ps1='git branch --contains HEAD 2>/dev/null'

par exemple. votre prombt vous obtenez avec cette commande:

$PS1='[\u@\h \W(`__git_ps1`)]\$'

ou avec

PS1='[\u@\h \W\[\033[36m\](`__git_ps1`)\[\033[0m\]]\$'

si vous aimez les couleurs

Vos scripts qui utilisent __git_ps1 et vous promettez fonctionneront parfaitement.

0
Radon8472

Cela a été testé sur debian/ubuntu.


  1. installer le paquet bash-completion
  2. assurez-vous que les lignes suivantes existent dans votre ~/.bashrc et ne sont pas commentées.

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
     . /etc/bash_completion
fi
0
sjas