Отображение имени ветки git в командной строке не работает на экране - PullRequest
23 голосов
/ 15 марта 2012

Я обновил мой файл .bashrc следующим образом:

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$'

Это работает, просто найдите, и я могу увидеть название моей ветки в приглашении. Однако, когда я запускаю «экран», я получаю

"- bash: __git_ps1: команда не найдена"

В чем может быть причина этого?

Ответы [ 8 ]

28 голосов
/ 09 декабря 2012

В этом блоге объясняется, что вам нужно добавить строку source /etc/bash_completion.d/git, прежде чем вы сможете использовать __git_ps1.

Вот полный пример:

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

Это также включает автоматическое завершение для ветвей.

При таком форматировании ваше приглашение будет выглядеть (без окраски):

~/my-repo(master) > 
24 голосов
/ 27 апреля 2013

Я считаю более понятным модифицировать существующее приглашение вместо определения нового.Следующий фрагмент добавляет имя ветки git к существующему приглашению (это $ PS1).Вы можете добавить следующий фрагмент в файл ~ / .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) ")'

Если вы хотите, чтобы название ветви было цветным, вы также можете сделать это: Например, цветзеленый определяется как [\ e [0; 32m].Мы добавляем это во внутреннюю строку функции git_ps1 и сбрасываем цвет, используя \ e [0m впоследствии.Экранированные скобки должны указывать, что вставлены «специальные» символы.

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

Многие другие определения цвета можно найти здесь

8 голосов
/ 29 ноября 2012

Проблема в том, что bash необходимо запустить как оболочку входа в систему, чтобы эта функция была доступна в настройке cygwin по умолчанию.Если вы запустите bash в Cygwin Bash, у вас будет та же проблема.Чтобы настроить экран для запуска bash в режиме входа в систему, добавьте эту строку в файл ~ / .screenrc:

shell -bash
7 голосов
/ 27 октября 2012
# 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\] красный

\[\033[0;33m\] желтый

\[\e[0m\] нормальный

3 голосов
/ 18 июня 2012

добавить source ~/.bash_profile в .bashrc.

У меня была такая же проблема, и она просто работала для меня.

0 голосов
/ 17 января 2019
root:~/project#  -> root:~/project(dev)# 

добавьте следующий код в конец вашего ~ / .bashrc

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
0 голосов
/ 08 марта 2018

Если у вас нет __git_ps1, вы можете использовать

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

Отображается так же, как __git_ps1.

И если вы создадите псевдоним, подобный этому:

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

например. Ваш промотор вы получите с помощью этой команды:

$PS1='[\u@\h \W(`__git_ps1`)]\$'

или с

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

если вам нравятся цвета

Ваши сценарии, которые используют __git_ps1 и ваш запрос, будут работать идеально.

0 голосов
/ 07 ноября 2017

Это было протестировано на Debian / Ubuntu.


  1. установка bash-completion пакет
  2. убедитесь, что следующие строки существуют в вашем ~/.bashrc и не закомментированы.

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
     . /etc/bash_completion
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...