2012-03-15 9 views
21

ho aggiornato il mio file .bashrc come segue:Visualizzazione git nome del ramo in rapido non funziona a schermo

PS1='[\[email protected]\h \W$(__git_ps1 " (%s)")]\$' 

Funziona basta trovare e posso vedere il mio nome ramo nel prompt. Tuttavia, quando si esegue "schermo", ottengo

"-bash: __git_ps1: Command not found"

quello che può essere la ragione di questo?

+0

Date un'occhiata a questa discussione: http://stackoverflow.com/questions/2231214/git-tips-and-tricks-display-branch-on-command-prompt-not-working-and-created- s – ChristofferH

risposta

3

aggiungi source ~/.bash_profile in .bashrc.

Aveva lo stesso problema e ha funzionato solo per me.

7
# 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\] è rosso

\[\033[0;33m\] è giallo

\[\e[0m\] è normale

8

Il problema è che bash deve essere eseguito come una shell di login per questa funzione sia disponibile nella predefinito setup cygwin. Se esegui bash in una cygwin bash avrai lo stesso problema. Per impostare visualizzate per eseguire bash in modalità di accesso, aggiungere questa riga al vostro file ~/.screenrc:

shell -bash 
+1

Ha funzionato per me su OSX, grazie! –

27

This blog post spiega che si deve aggiungere la riga source /etc/bash_completion.d/git prima di poter utilizzare __git_ps1.

Ecco l'esempio completo:

source /etc/bash_completion.d/git 
export PS1='\w$(__git_ps1 "(%s)") > ' 

Ciò consente anche il completamento automatico per le filiali.

Utilizzando che la formattazione, il prompt sarà simile (senza coloranti):

~/my-repo(master) > 
+0

come si fa ma mantenendo le normali informazioni di prompt? (ad esempio, basta aggiungere il nome corrispondente) – srcspider

+7

In Ubuntu 13.04, sembra che tu debba trovare "/ etc/bash_completion.d/git-prompt' (che a sua volta fa riferimento a/usr/lib/git-core/git- sh-prompt') invece di '/ etc/bash_completion.d/git'. (Potrebbe essere necessario cercare il file di completamento corretto per l'origine ...) – michael

+1

__git_ps1 è stato spostato da git-completion. Vedi http://stackoverflow.com/a/12871094/551045 per ulteriori informazioni – RedX

22

Trovo più pulito di modificare il prompt esistente invece di definire una nuova. Il seguente snippet aggiunge il nome del ramo git al prompt esistente (che è $ PS1). È possibile aggiungere il seguente frammento al file ~/.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) ")' 

Se si desidera avere il nome del ramo di colore si può fare anche questo: Per esempio, il colore verde è definito come [ \ e [0; 32m]. Aggiungiamo questo alla stringa interna della funzione git_ps1 e ripristiniamo il colore usando \ e [0m in seguito. Le parentesi di escape sono necessarie per indicare che i caratteri "speciali" sono inseriti.

PS1=$PS1'$(__git_ps1 "\[\e[0;32m\](%s) \[\e[0m\]")' 

Molte altre definizioni dei colori can be found here

+0

Per colorare il ramo in base al suo stato (pulito/sporco/nascosto/ecc.), Puoi usare questo ** [script prompt git] (http://digitalfortress.tech/tutorial/setting-up-git-prompt-step -da-step /) **. –

0

Questo è stato testato su Debian/Ubuntu.


  1. installare bash-completion pacchetto
  2. assicurarsi che esistano le seguenti righe nel vostro ~/.bashrc e non sono commentate.

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then 
    . /etc/bash_completion 
fi 
0

Se non avete __git_ps1 si potrebbe usare

git branch --contains HEAD 2>/dev/null 

Esso mostra lo stesso __git_ps1 simili.

E se si crea un alias come questo:

alias __git_ps1='git branch --contains HEAD 2>/dev/null' 

esempio il vostro prombt si ottiene con questo comando:

$PS1='[\[email protected]\h \W(`__git_ps1`)]\$' 

o con

PS1='[\[email protected]\h \W\[\033[36m\](`__git_ps1`)\[\033[0m\]]\$' 

se vi piacciono i colori

vostri script che utilizzano __git_ps1 e promt funzionerà perfetto.