Вопрос или проблема
Я использую это руководство, чтобы показать имя ветки в терминале gnome (Ubuntu 15.10) при работе в репозитории git. На основе вышеизложенного у меня теперь есть следующее в моем файле ~/.bashrc:
# раскомментировать для цветного приглашения, если терминал поддерживает эту возможность; выключено
# по умолчанию, чтобы не отвлекать пользователя: внимание в окне терминала
# должно быть на выводе команд, а не на приглашении
#force_color_prompt=yes
…
# Добавить ветку git, если она присутствует в 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
В результате я теперь получаю:
значит, это работает. Но почему цвет моего user@host был убран? И я также ожидал, что имя ветки должно быть цветным. Раньше это выглядело так:
ОБНОВЛЕНИЕ:
Я теперь попробовал это руководство вместо этого:
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\] $ "
и это работает:
Обратите внимание, что в .bashrc у меня также есть это (по умолчанию):
# раскомментировать для цветного приглашения, если терминал поддерживает эту возможность; выключено
# по умолчанию, чтобы не отвлекать пользователя: внимание в окне терминала
# должно быть на выводе команд, а не на приглашении
#force_color_prompt=yes
Мне еще предстоит узнать причину, почему этот фрагмент дает правильный результат, а другая версия — нет. Есть какие-то мысли по этому поводу?
Вот версия моего .bashrc, в которой включен старый фрагмент, который не работает:
Этот фрагмент:
# Добавить ветку git, если она присутствует в 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
должен заменить определение по умолчанию:
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
.
Либо замените определение по умолчанию на этот фрагмент, либо оставьте ваш ~/.bashrc
таким, как он есть сейчас, и закомментируйте как определение по умолчанию, так и unset color_prompt force_color_prompt
.
Если вы оставите ваш ~/.bashrc
таким, как он есть сейчас, и закомментируете как определение по умолчанию, так и unset color_prompt force_color_prompt
, ваш ~/.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
# Добавить ветку git, если она присутствует в 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
Ubuntu: Показать имя вашей ветки в терминале
Добавьте эти строки в ваш файл ~/.bashrc
# Показать имя ветки git
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
Обновите файл .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 # Показать имя ветки git в приглашении команд export GIT_PS1_SHOWCOLORHINTS=true # Опция для git-prompt.sh для отображения имени ветки в цвете # Терминальное приглашение: # Включить ветку git, используйте PROMPT_COMMAND (не PS1), чтобы получить цветной вывод (см. git-prompt.sh для получения дополнительной информации) export PROMPT_COMMAND='__git_ps1 "\w" "\n\\\$ "' # Ветка git (зависит от git-prompt.sh)
Пока вы находитесь внутри репозитория git, ваше приглашение Bash теперь должно показывать
текущую ветку git в цвете, указывающем на наличие необработанных
изменений.
Быстрый хак:
- Добавьте это в
~/.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\]$ "
- Перезапустите терминал или выполните
source ~/.bashrc
:
Более подробная информация:
https://medium.com/@thucnc/how-to-show-current-git-branch-with-colors-in-bash-prompt-380d05a24745
Добавьте следующие строки в ~/.bashrc
:
export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true
export 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\] $ "
Если у вас открыт терминал, закройте его и откройте снова. Наслаждайтесь!!
Почему беспокоиться об использовании sed
? как в …
git branch 2> /dev/null | sed -e ‘/^[^]/d’ -e ‘s/ (.*)/(\1)/’
Гораздо проще просто использовать:
git branch –show-current
Это выводит текущую ветку и никаких лишних символов!
Я использую bash-git-prompt. Это настраиваемо и проще, чем писать свое собственное, что, как я предполагаю, ищут многие читатели.
Мой вариант для KUbuntu 20.04 LTS, основанный на исходном значении PS1
:
# вставить в ~/.bashrc
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
Тема старая, но я опубликую, чтобы помочь кому-то.
В файле .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
Моя проблема заключалась в том, что я не включил опцию
Запускать команду как оболочку входа в
Терминал → Правка → Настройки профиля → Команда
замените
parse_git_branch
на
parse_git_branch 2>/dev/null
в вашем определении PS1 и живите долго и счастливо.
sudo vi .bashrc
Напишите ниже код в конце файла:
git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
export PS1="\[\033[1;36m\]\u\[\033[1;31m\]@\[\033[1;32m\]\h:\[\033[1;35m\]\w\[\033[1;31m\]\$\[\033[0m\]\$(git_branch)\$ "
source .bashrc
Лучшее и краткое решение.
Измените файл .bashrc, находящийся в ~/ директории.
Измените переменную PS1. В моем случае это 60-я строка.
Выдержки из файла .bashrc с измененной переменной PS1:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;36m\]`__git_ps1`\[\033[00m\]\n\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
Я добавил __git_ps1
переменную и \n для новой строки для лучшей
читаемости.
Работает в Ubuntu 22.04 LTS и 20.04.4 LTS с установленным git.
Пример:
пример терминала
Используйте bash-git-prompt
Проверьте этот git репозиторий https://github.com/magicmonty/bash-git-prompt
В моем случае я не перезаписывал переменную PS1
, потому что мне нужно было сохранить добавленное окружение, которое добавляется пакетом anaconda, то есть (base)
на изображении ниже. Я использую Ubuntu 20.04, и все, что я хотел, это добавить ветку в конце, благодаря @thucnguyen, так как мое решение основано на его:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1) /'
}
export PS1="$PS1\[\e[91m\]\$(parse_git_branch)\[\e[00m\]"
Ответ или решение
Чтобы отобразить название ветки Git с цветами в командной строке Bash на Ubuntu в терминале GNOME, вам необходимо внести изменения в файл конфигурации ~/.bashrc
. Я подробно расскажу, как это сделать, а также объясню, почему некоторые изменения могут не срабатывать должным образом.
Шаги для настройки цветного отображения ветки Git
-
Открытие файла
.bashrc
:
Выполните в терминале следующую команду, чтобы открыть файл конфигурации:nano ~/.bashrc
-
Добавление функции
parse_git_branch
:
Вставьте следующую функцию в конец файла. Эта функция будет извлекать имя текущей ветки Git.parse_git_branch() { git branch 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/' }
-
Настройка переменной
PS1
:
Теперь необходимо изменить переменнуюPS1
, которая определяет формат командной строки. В одном из этих фрагментов необходимо заменитьPS1
вашей конфигурацией. Приведу пример настройки: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
-
Включение цветного подсветки:
Убедитесь, что переменныеcolor_prompt
иforce_color_prompt
выставлены вyes
, чтобы включить цветное отображение:force_color_prompt=yes color_prompt=yes
-
Сохранение изменений:
Сохраните изменения в редакторе (вnano
нажмитеCTRL+O
, затемENTER
, иCTRL+X
для выхода). -
Применение изменений:
Чтобы изменения вступили в силу, выполните следующую команду:source ~/.bashrc
О возможных проблемах
Если вы заметили, что цвета в вашем выводе исчезли или не отображаются, это может быть связано с тем, как вы определили переменную PS1
. Некоторые версии конфигурации .bashrc
могут необязательно включать обработку цветового кода для определенных элементов. Важно, чтобы все элементы в строке PS1
, которые вы хотите выделить цветом, были заключены в соответствующие escape-последовательности \[\033[XXm\]
и завершающий \[\033[00m\]
для сброса цвета.
Обратите внимание, в вашем первоначальном фрагменте могла быть строка unset color_prompt force_color_prompt
, которая отключала цветовую подсветку после того, как вы её включили. Убедитесь, что эта строка закомментирована или удалена, чтобы изменения применились правильно.
Рекомендации
- Использование
__git_ps1
: Если вы ищете более изящное решение, рассмотрите использование встроенной функции__git_ps1
, которая входит в пакет Git. Это может упростить получение текущей ветки. - Поддержка инструментов: Для более сложных настроек рассмотрите использование
bash-git-prompt
, который обеспечивает высокую степень кастомизации и поддержку различных функций.
С помощью этих настроек вы сможете легко отображать текущую ветку Git с цветами в вашем терминале Bash, что значительно упростит работу с репозиториями.
Теперь, следуя вышеупомянутым шагам и рекомендациям, вы сможете настроить ваш Bash TMUX для более эффективной работы.