209 votes

Comment puis-je afficher la branche git avec des couleurs dans l'invite de commandes Bash ?

Je suis en train d'utiliser ce guide pour afficher le nom de la branche dans le terminal gnome (Ubuntu 15.10) lorsque je travaille dans un dépôt git. En fonction de ce qui précède, j'ai maintenant ce qui suit dans mon fichier ~/.bashrc :

# décommentez pour un invite de couleur, si le terminal en a la capacité ; désactivé
# par défaut pour ne pas distraire l'utilisateur : le focus dans une fenêtre de terminal
# devrait être sur la sortie des commandes, pas sur l'invite
#force_color_prompt=yes 

...

# Ajouter la branche git si elle est présente à PS1
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

En conséquence, j'obtiens maintenant :

enter image description here

alors cela fonctionne. Mais pourquoi la coloration de mon user@host a-t-elle été supprimée ? Et je m'attendrais également à ce que le nom de la branche soit coloré. Avant, cela ressemblait à ceci :

enter image description here

MISE À JOUR : J'ai maintenant essayé ce guide à la place :

https://coderwall.com/p/fasnya/add-git-branch-name-to-bash-prompt

en ajoutant ceci à .bashrc :

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

et ça fonctionne :

enter image description here

Remarquez dans .bashrc j'ai aussi ceci (par défaut) :

# décommentez pour un invite de couleur, si le terminal en a la capacité ; désactivé
# par défaut pour ne pas distraire l'utilisateur : le focus dans une fenêtre de terminal
# devrait être sur la sortie des commandes, pas sur l'invite
#force_color_prompt=yes

Je n'ai pas encore trouvé la raison pour laquelle ce extrait donne le résultat correct et l'autre version ne le fait pas. Des idées à ce sujet ?

Voici la version de mon .bashrc qui a l'ancien extrait activé qui ne fonctionne pas :

http://pastebin.com/M8kjEiH3

2voto

webtechnelson Points 653

Allez dans le dossier principal

cliquez sur Ctrl+h pour afficher les fichiers cachés.

Ouvrez le fichier .bashrc et collez à la fin ce qui suit:

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

Si vous avez votre terminal ouvert, fermez-le et ouvrez-le à nouveau. Profitez-en !!

1voto

Sundeep Bhatia Points 11

Pourquoi s'embêter avec l'utilisation de sed? comme dans ...

git branch 2> /dev/null | sed -e '/^[^]/d' -e 's/<\/em> (.*)/(\1)/'

_

Beaucoup plus facile à utiliser:

git branch --show-current

Il affiche la branche actuelle sans caractères supplémentaires!

_

1voto

Le sujet est ancien mais je vais poster pour pouvoir aider quelqu'un. Dans le fichier .bashrc situé à l'intérieur du dossier local de l'utilisateur, remplacer le PS1 existant par celui-ci :

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\[\033[1;36m\]$(__git_ps1 " (%s)")\[\033[01;34m\]$\[\033[00m\]'

Si vous souhaitez modifier la couleur de la branche, changez la couleur avant le paramètre $(__git_ps1 "(%s)") c'est-à-dire, changez cette valeur :

 \[\033[1;36m\]

tableau des couleurs https://gist.github.com/avelino/3188137

1voto

John Points 11

J'utilise git-bash-prompt. C'est configurable et plus facile que d'écrire le vôtre, ce que je suppose que de nombreux lecteurs recherchent.

0voto

Joker Points 101

Mon problème était que je n'avais pas activé l'option

Exécuter la commande en tant que shell de connexion dans

Terminal Modifier Préférences de profil Commande

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X