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

64

J'utilise ceci guide pour afficher le nom de la branche dans le terminal gnome (Ubuntu 15.10) lors de l'utilisation d'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/* \(.*\)/()/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\[email protected]\h\[3[00m\]:\[3[01;34m\]\w\[3[01;31m\]$(parse_git_branch)\[3[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\[email protected]\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt

En conséquence, je reçois maintenant:

doncçafonctionne[email protected]ôtea-t-elleétésupprimée?Etjem'attendraisaussiàcequelenomdelabranchesoitcoloré.Avantcelaressemblaitàceci:

UPDATE:J'aimaintenantessayéceguideàlaplace:

lien

l'ajoutant à .bashrc:

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

et cela fonctionne:

Remarquezdans.bashrcJ'aiaussiceci(pardéfaut):

#uncommentforacoloredprompt,iftheterminalhasthecapability;turned#offbydefaulttonotdistracttheuser:thefocusinaterminalwindow#shouldbeontheoutputofcommands,notontheprompt#force_color_prompt=yes

Jen'aipasencoretrouvélaraisonpourlaquellecetextraitdonnelerésultatcorrectetnonlaversionprécédente.Descommentairesàcesujet?

Voicilaversiondemon.bashrcsurlaquellel'anciensnippetestactivéetquinefonctionnepas:

lien

    
posée u123 07.02.2016 - 09:07
la source

6 réponses

87

Cet extrait:

# Add git branch if its present to PS1

parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/()/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\[email protected]\h\[3[00m\]:\[3[01;34m\]\w\[3[01;31m\]$(parse_git_branch)\[3[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\[email protected]\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)}\[3[01;32m\]\[email protected]\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
fi

Qui se termine par:

unset color_prompt force_color_prompt

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

remplacez la définition d'invite par défaut par le fragment ou laissez votre ~/.bashrc tel quel et commentez la définition d'invite par défaut ainsi que unset color_prompt force_color_prompt sur la ligne # 64:

Ainsi, une partie de votre .bashrc pourrait ressembler à

parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/()/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\[email protected]\h\[3[00m\]:\[3[01;34m\]\w\[3[01;31m\] $(parse_git_branch)\[3[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\[email protected]\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)}\[3[01;32m\]\[email protected]\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
#else
#    PS1='${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
#fi
#unset color_prompt force_color_prompt

    
réponse donnée kos 07.02.2016 - 09:30
la source
14
Ubuntu: Show your branch name on your 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/* \(.*\)/()/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\[email protected]\h\[3[00m\]:\[3[01;34m\]\w\[3[01;31m\]$(parse_git_branch)\[3[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\[email protected]\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt
    
réponse donnée Sam 16.08.2017 - 11:23
la source
6

Pour l'instant, j'ai suivi ceci lien et fonctionne, j'aime bien jusqu'à présent, mais je prévois de le personnaliser davantage.

In Terminal

mkdir ~/.bash

Copy the raw git-prompt.sh file from git contrib in to the ~/.bash directory: https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh

Inside ~/.bashrc or ~/.bash_profile (choose the file where you normally put any bash customizations/setup), add the lines:

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)

As long as you're inside a git repo, your Bash prompt should now show the current git branch in color signifying if its got uncommitted changes.

    
réponse donnée ifelsemonkey 08.03.2017 - 00:11
la source
2

Aller au dossier personnel

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

Ouvrez le fichier. bashrc et collez le suivant:

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

Si votre terminal est ouvert, fermez-le et rouvrez-le. Profitez-en!

    
réponse donnée 13.10.2018 - 23:59
la source
0

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

    
réponse donnée Joker 26.09.2017 - 13:15
la source
0

remplacer

parse_git_branch

avec

parse_git_branch 2>/dev/null

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

    
réponse donnée andrej 18.05.2018 - 12:19
la source

Lire d'autres questions sur les étiquettes