Добавление git branch в bash prompt на снежном барсе

2028
crayment

Я использую это:

$(__git_ps1 '(%s)') 

Он работает, однако, он не обновляется, когда я меняю каталоги или извлекаю новую ветку. У меня также есть этот псевдоним:

alias reload='. ~/.bash_profile' 

Образец прогона:

user@machine:~/dev/rails$cd git_folder/ user@machine:~/dev/rails/git_folder$reload user@machine:~/dev/rails/git_folder(test)$git checkout master Switched to branch 'master' user@machine:~/dev/rails/git_folder(test)$reload user@machine:~/dev/rails/git_folder(master)$ 

Как вы видите, он устанавливается правильно, но только если я перезагружаю bash_profile. Я потратил много времени на это. Я использую баш на снежном барсе. Пожалуйста помоги!

Изменить: вы можете увидеть мои точечные файлы на GitHub и файл, устанавливающий PS1 здесь

8

3 ответа на вопрос

9
crayment

Хорошо, проблема решена.

Я делал:

export PS1="$(__git_ps1 '(%s)')" 

и мне нужно было сделать:

export PS1="\$(__git_ps1 '(%s)')" 

Вам нужно экранировать знак доллара, иначе он просто запускается один раз и подставляется.

0
Dennis Williamson

Вам, вероятно, нужно использовать $PROMPT_COMMAND

Благодарю. Я пытался играть с PROMPT_COMMAND, но не работал с моей текущей настройкой. Вы можете увидеть файл, который выполняет настройку здесь: http://github.com/crayment/dotfiles/blob/master/bash/config crayment 14 лет назад 0
0
studgeek

Обратите внимание, что последний git перемещает __git_ps1 из bash_completion, так что вам нужно получить его отдельно. См. Https://superuser.com/a/477749/66255 .