web-dev-qa-db-fra.com

Comment afficher la branche git avec des couleurs dans l'invite Bash?

J'utilise ce guide pour afficher le nom de la branche dans le terminal gnome (Ubuntu 15.10) lorsque je travaille dans un référentiel git. Sur la base de ce qui précède, j'ai maintenant le texte ci-dessous dans mon fichier ~/.bashrc:

# uncomment for a colored Prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the Prompt
#force_color_Prompt=yes 

...

# Add git branch if its present to 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, je reçois maintenant:

enter image description here

donc cela fonctionne . Mais pourquoi la coloration de mon utilisateur @ Host a-t-elle été supprimée? Et je m'attendrais aussi à ce que le nom de la branche soit coloré. Avant cela ressemblait à ceci:

enter image description here

UPDATE: 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 marche:

enter image description here

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

# uncomment for a colored Prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the Prompt
#force_color_Prompt=yes

Je n'ai pas encore trouvé la raison pour laquelle cet extrait donne le résultat correct et non la version précédente. Des commentaires à ce sujet?

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

http://Pastebin.com/M8kjEiH

93
u123

Cet extrait:

# Add git branch if its present to 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

Est destiné à remplacer la définition d'invite par défaut:

if [ "$color_Prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

Qui se termine par:

unset color_Prompt force_color_Prompt

Le .bashrc que vous avez publié indique que vous l'ajoutez après la définition d'invite par défaut et unset color_Prompt force_color_Prompt (ligne # 64).

Soit remplacez la définition d'invite par défaut par l'extrait de code ou laissez votre ~/.bashrc tel qu'il est et commentez la définition d'invite par défaut avec unset color_Prompt force_color_Prompt à la ligne # 64:


Donc, une partie de votre .bashrc pourrait ressembler à

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
# THE SIX LINES BELOW are the default Prompt and the unset (which were in the original .bashrc)
#if [ "$color_Prompt" = yes ]; then
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#else
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#fi
#unset color_Prompt force_color_Prompt

screensot

108
kos

Ubuntu: affichez le nom de votre branche sur votre terminal

Ajoutez ces lignes dans votre fichier ~/.bashrc

# Show git branch name
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

Rechargez le fichier .bashrc avec cette commande:

$ source ~/.bashrc
41
Sam

Pour l'instant, j'ai suivi ceci https://Gist.github.com/eliotsykes/47516b877f5a4f7cd52f et je travaille, j'aime ça jusqu'à présent, bien que je prévoie de le personnaliser davantage.

Dans le terminal

mkdir ~/.bash

Copiez le fichier git-Prompt.sh brut de git contrib dans le répertoire ~/.bash: https://github.com/git/git/blob/master/contrib/completion/git-Prompt.sh

Dans ~/.bashrc ou ~/.bash_profile (choisissez le fichier dans lequel vous mettez normalement les personnalisations/configurations bash), ajoutez les lignes suivantes:

source ~/.bash/git-Prompt.sh # Show git branch name at command Prompt
export GIT_PS1_SHOWCOLORHINTS=true # Option for git-Prompt.sh to show branch name in color

# Terminal Prompt:
# Include git branch, use Prompt_COMMAND (not PS1) to get color output (see git-Prompt.sh for more)
export Prompt_COMMAND='__git_ps1 "\w" "\n\\\$ "' # Git branch (relies on git-Prompt.sh)

Tant que vous vous trouvez dans un dépôt Git, votre invite Bash doit maintenant afficher la branche git actuelle en couleur, ce qui signifie qu'elle contient des modifications non validées.

10
typelogic

Aller au dossier d'accueil

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

Ouvrez le fichier .bashrc et collez à la fin le suivant:

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 votre terminal est ouvert, fermez-le et rouvrez-le. Prendre plaisir!!

2
webtechnelson

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

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

Terminal Editer Profil Préférences Commande

0
Joker

remplacer

parse_git_branch

avec

parse_git_branch 2>/dev/null

dans votre définition de PS1 et vivez heureux pour toujours.

0
andrej