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?
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) >
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
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
# 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
ajoutez source ~/.bash_profile
dans .bashrc
.
Avait le même problème et cela a fonctionné pour moi.
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
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.
Cela a été testé sur debian/ubuntu.
bash-completion
~/.bashrc
et ne sont pas commentées.if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi