Как мне показать ветку 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 PS1parse_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)\$ 'fiunset color_prompt force_color_prompt

В результате я теперь получаю:

enter image description here

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

enter image description here

ОБНОВЛЕНИЕ: теперь я попробовал это руководство вместо этого:

https://coderwall.com/p/fasnya/add-git-branch-name-to-bash-prompt

добавление этого в .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

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

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

http://pastebin.com/M8kjEiH3

Этот фрагмент:

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

Предназначен для заменять определение приглашения по умолчанию:

if [ "$color_prompt" = yes ]; then    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 'else    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 'fi

Который заканчивается словами:

unset color_prompt force_color_prompt

То .bashrc вы опубликовали показывает, что вы добавляете его после определение приглашения по умолчанию и unset color_prompt force_color_prompt (строка №64).

Любой заменять определение приглашения по умолчанию с помощью фрагмента кода или оставьте свой ~/.bashrc как есть и прокомментируйте определение приглашения по умолчанию вместе с unset color_prompt force_color_prompt на линии №64:


Таким образом, часть вашего .bashrc может выглядеть следующим образом

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# THE SIX LINES BELOW are the default prompt and the unset (which were in the original .bashrc)#if [ "$color_prompt" = yes ]; then#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '#else#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '#fi#unset color_prompt force_color_prompt

screensot

Ubuntu: Покажите название вашей ветки на вашем терминале

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

# Show git branch nameforce_color_prompt=yescolor_prompt=yesparse_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)\$ 'fiunset color_prompt force_color_prompt

Перезагрузите файл .bashrc с помощью этой команды:

$ source ~/.bashrc

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

В Терминале

mkdir ~/.bash

Скопируйте необработанный 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 promptexport 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 цветом, указывающим, есть ли в ней незафиксированные изменения.

Быстрый взлом:

  1. Добавление этого к ~/.bashrc:
parse_git_branch() {     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'}export PS1="\u@\h \[\e[32m\]\w \[\e[91m\]\$(parse_git_branch)\[\e[00m\]$ "
  1. Перезапустите терминал или исходный ~/.bashrc:

enter image description here

Более подробно: https://medium.com/@thucnc/how-to-show-current-git-branch-with-colors-in-bash-prompt-380d05a24745

Добавьте приведенные ниже строки к ~/.bashrc:

export GIT_PS1_SHOWDIRTYSTATE=trueexport GIT_PS1_SHOWUNTRACKEDFILES=trueexport PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '

Перейдите в домашнюю папку

щелчок Ctrl+h чтобы показать скрытые файлы.

Открыть.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\] $ "

Если у вас открыт терминал, закройте и откройте снова. Наслаждайтесь!!

Я использую git-bash-подсказка. Это настраивается и проще, чем писать свой собственный, что, я полагаю, и есть то, что ищут многие читатели.

Зачем беспокоиться об использовании sed? например ...

ветвь git 2> /dev/null | sed -e '/^[^] / d '- e ' s/ (.*)/(\1)/'

Гораздо проще просто использовать:

ветвь git --показать-текущий

Он выводит текущую ветвь и никаких дополнительных символов!

заменять

parse_git_branch

с

parse_git_branch 2>/dev/null

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

Тема старая, но я опубликую сообщение о том, что могу кому-то помочь.В файле .bashrc, расположенном внутри локальной папки пользователя, замените существующий PS1 на этот:

if [ "$color_prompt" = yes ]; then    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\[\033[1;36m\]$(__git_ps1 " (%s)")\[\033[01;34m\]$\[\033[00m\]'

Если вы хотите изменить цвет ветки, измените цвет, измените цвет перед параметром $ (__ git_ps1 "(% s)"), то есть измените это значение:

 \[\033[1;36m\]

цветовая диаграммаhttps://gist.github.com/avelino/3188137

@u123 не беспокойтесь слишком сильно о “.bashrc” по умолчанию. Если вы напортачите, вы всегда можете получить оригинал из /etc/skel/.bashrc.

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

Я бы рекомендовал использовать git-prompt.sh - вместо этого. Тем не менее, нет необходимости использовать "git branch" и передавать в "sed". Просто используйте git describe --contains --all HEAD`

Был ли force_color_prompt раскомментирован раньше?

Да, я пробовал как с без комментариев, так и с комментариями один и тот же результат. В руководстве, опубликованном выше, говорится, что его следует закомментировать.

Можете ли вы опубликовать свой полный файл .bashrc? IIRC по умолчанию .bashrc не включает цветовые подсказки, поэтому вы должны изменить его, чтобы показывать цвета. Это зависит от того, что вы изменили.

В вашем новом фрагменте есть цветовые коды (\[\033[32m\] и аналогичные части) без каких-либо проверок. Старый фрагмент кода проверяет, включены ли цветовые подсказки, прежде чем использовать их, и если они не включены, хорошо.

Насколько я вижу, в старом фрагменте также есть это, когда он принимает значение true. И я действительно попробовал включить / отключить ‘force_color_prompt=yes’. Я позаботился о том, чтобы перезапускать gnome-terminal после каждого изменения.

Вот почему я попросил вас показать остальную часть `.bashrc".