Отображение git имя ветки в приглашении не работает на экране
Я обновил файл .bashrc следующим образом:
PS1='[\[email protected]\h \W$(__git_ps1 " (%s)")]\$'
Он работает, просто найдите, и я могу увидеть имя моего ветки в приглашении. Однако, когда я запускаю "экран", я получаю
"- bash: __git_ps1: команда не найдена
В чем причина этого?
Ответы
Ответ 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