Подтвердить что ты не робот

Отображение git имя ветки в приглашении не работает на экране

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

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

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

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

В чем причина этого?

4b9b3361

Ответ 1

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

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

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

Это также позволяет автоматическое заполнение ветвей.

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

~/my-repo(master) > 

Ответ 2

Я считаю более чистым изменять существующее приглашение вместо определения нового. Следующий фрагмент добавляет имя ветки 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 и reset цвет, используя \e [0m впоследствии. Экранированные скобки должны указывать, что вставлены "специальные" символы.

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

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

Ответ 3

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

shell -bash

Ответ 4

# 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\] является нормальным

Ответ 5

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

Имела ту же проблему, и это просто сработало для меня.

Ответ 6

Это было проверено на debian/ubuntu.


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

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

Ответ 7

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

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

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

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

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

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

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

или с

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

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

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

Ответ 8

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\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\[email protected]\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt