Como mostro o ramo git com cores no prompt do Bash?

88

Estou usando o este orientar para mostrar o nome da ramificação no terminal gnome (Ubuntu 15.10) ao trabalhar em um repositório git. Com base no acima, agora tenho o seguinte no meu arquivo ~ / .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

Como resultado, agora obtenho:

entãofunciona.Masporqueacoloraçãodomeuusuá[email protected]?Etambémesperoqueonomedaramificaçãosejacolorido.Antesdisso,pareciaassim:

ATUALIZAÇÃO:Eujátenteiesteguia:

link

adicionando isso ao .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\] $ "

e isso funciona:

Avisoem.bashrcEutambémtenhoisso(padrão):

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

Aindanãoencontreiomotivopeloqualosnippetforneceoresultadocorretoeaoutraversãonão.Qualquerentradasobreisso?

Aquiestáaversãodomeu.bashrcquetemosnippetantigoativadoquenãofunciona:

link

    
por u123 07.02.2016 / 09:07

6 respostas

105

Este snippet:

# 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

Destina-se a substituir a definição de prompt padrão:

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

Que termina com:

unset color_prompt force_color_prompt

O .bashrc que você postou mostra que você está adicionando após a definição de prompt padrão e unset color_prompt force_color_prompt (linha 64).

Substitua a definição de prompt padrão pelo snippet ou deixe seu ~/.bashrc como está e comente a definição de prompt padrão junto com unset color_prompt force_color_prompt na linha # 64:

Assim, parte do seu .bashrc pode parecer

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

    
por kos 07.02.2016 / 09:30
35

Ubuntu: Mostre o nome da sua filial no seu terminal

Adicione estas linhas no seu arquivo ~ / .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

Recarregue o arquivo .bashrc com este comando:

$ source ~/.bashrc
    
por Sam 16.08.2017 / 11:23
10

Por enquanto, eu segui isso link e funcionando, até agora, embora eu esteja planejando personalizá-lo ainda mais.

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.

    
por ifelsemonkey 08.03.2017 / 00:11
2

Ir para pasta pessoal

clique em Ctrl + h para mostrar os arquivos ocultos.

Abra o arquivo bashrc e, no final, cole o seguinte:

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\] $ "

Caso você tenha seu terminal aberto, feche e abra novamente. Aproveite !!

    
por 13.10.2018 / 23:59
0

Meu problema é que eu não tinha ativado a opção

Execute o comando como um shell de login em

Terminal Editar Preferências de perfil Comando

    
por Joker 26.09.2017 / 13:15
0

substituir

parse_git_branch

com

parse_git_branch 2>/dev/null

na sua definição PS1 e viva feliz para sempre.

    
por andrej 18.05.2018 / 12:19