Как показать ветку git с цветами в приглашении Bash?

Я использую это руководство для отображения имени ветки в терминале gnome (Ubuntu 15.10) при работе в репозитории git. Основываясь на приведенном выше, теперь у меня есть следующее в файле ~ / .bashrc:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes 

...

# Add git branch if its present to PS1
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

В результате я теперь получаю: [!d3 ]

это руководство

, поэтому оно работает. Но почему была удалена окраска моего пользователя @ host? И я также ожидал, что название ветки должно быть окрашено. Прежде чем это выглядело так:

UPDATE: теперь я попробовал это руководство:

[d15 ] добавив это в .bashrc:

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

и работает:

enter image description here

Обратите внимание на .bashrc У меня также есть это (по умолчанию):

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

Мне еще предстоит найти причину, по которой этот фрагмент дает правильный результат, а другая версия - нет. Любой вход на этом?

Вот версия моего .bashrc, у которого включен старый фрагмент, который не работает:

enter image description here

1
задан 7 February 2016 в 12:39

4 ответа

На данный момент я выполнил этот https://gist.github.com/eliotsykes/47516b877f5a4f7cd52f и работал, по-моему, до сих пор, хотя я планирую настроить его дальше.

В терминале [ f1] Скопируйте исходный файл git-prompt.sh из git contrib в каталог ~/.bash: https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh Внутри ~/.bashrc или ~/.bash_profile (выберите файл, в который вы обычно помещаете настройки / настройки bash), добавьте строки:
source ~/.bash/git-prompt.sh # Show git branch name at command prompt
export GIT_PS1_SHOWCOLORHINTS=true # Option for git-prompt.sh to show branch name in color

# Terminal Prompt:
# Include git branch, use PROMPT_COMMAND (not PS1) to get color output (see git-prompt.sh for more)
export PROMPT_COMMAND='__git_ps1 "\w" "\n\\\$ "' # Git branch (relies on git-prompt.sh)
Пока вы находитесь внутри репозитория git, ваша подсказка Bash теперь должна отображать текущую ветку git в цвете, обозначающую, если его получили незафиксированные изменения.
5
ответ дан 23 May 2018 в 13:42
Ubuntu: Show your branch name on your terminal

Добавьте эти строки в файл ~ / .bashrc

# Show git branch name
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
1
ответ дан 23 May 2018 в 13:42

Моя проблема заключалась в том, что я не включил опцию

Запустить команду в качестве оболочки входа в

Терминал → Изменить → Настройки профиля → Команда

0
ответ дан 23 May 2018 в 13:42

замените

parse_git_branch

на

parse_git_branch 2>/dev/null

в вашем определении PS1 и живите долго и счастливо.

0
ответ дан 23 May 2018 в 13:42

Другие вопросы по тегам:

Похожие вопросы: