Вопрос или проблема
Я использую операционную систему Fedora и хочу отображать ветку или тег git в терминале, когда захожу в папку проекта git.
Я следую этому руководству. После того как я выполнил:
source /usr/share/git-core/contrib/completion/git-prompt.sh
source ~/.bashrc
Ветка git отображается хорошо. Но если я выполню:
cd .. # я возвращаюсь в родительскую папку, которая не является папкой git
Ветка git остается. Как я могу это исправить?
Не уверен, почему руководство ведет себя неправильно, но вы можете сделать это сами довольно легко. Определите псевдоним вроде этого в вашем .bashrc
:
# функция для PS1, которая отображает [ git ветка], когда она определена
function __show_git_branch() {
branch=`git rev-parse --abbrev-ref HEAD 2>/dev/null`
test -n "$branch" && echo " [$branch]"
}
затем задайте PS1 на что-то вроде этого:
PS1='-- $(__show_git_branch) \$ '
Это заставит ветку git пересчитываться каждый раз, когда отображается подсказка. Если возникает ошибка, она отправляется в /dev/null
, и последующий test
не выведет ничего, так что это вернет пустую строку, если вы не находитесь в директории git
.
Вы этого не спрашивали, но я передаю это как “полезный совет”. Полезно знать, что вы повторно инициализируете всё, когда работаете с bash
псевдонимами и переменными окружения. Простой способ сделать это — использовать exec
:
exec bash
Это перезапустит bash выше текущей запущенной оболочки. Если вы хотите перезапустить его так, как если бы вы снова входили, тогда exec bash -l
.
Добавьте эти строки кода в ваш файл ~/.bashrc
или .bash_profile
- откройте терминал и перейдите в вашу домашнюю папку в терминале
(которая обозначается как~
). Вы можете перейти в домашнюю папку с помощью командыcd
и нажать Enter в терминале. - Теперь введите
la
и посмотрите, существуют ли .bashrc или .bash_profile. - Теперь откройте любой файл, используя
sudo nano .bashrc
(здесь вы можете использовать
либо.bashrc
, либо.bash_profile
). Я использую файл.bashrc
здесь
Теперь ваш редактор nano предложит, перейдите в нижнюю часть вашего редактора nano, нажав клавишу со стрелкой вниз, и вставьте следующие строки кода в конец вашего файла.
# чтобы добавить имена веток git
function parse_git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
RED="\[\033[01;31m\]"
YELLOW="\[\033[01;33m\]"
GREEN="\[\033[01;32m\]"
BLUE="\[\033[01;34m\]"
NO_COLOR="\[\033[00m\]"
# без хоста
PS1="$GREEN\u$NO_COLOR:$BLUE\w$YELLOW\$(parse_git_branch)$NO_COLOR\$ "
# с хостом
# PS1="$GREEN\u@\h$NO_COLOR:$BLUE\w$YELLOW\$(parse_git_branch)$NO_COLOR\$ "
Теперь нажмите Ctrl + s, чтобы сохранить файл, и нажмите Ctrl + x, чтобы выйти из редактора nano.
Теперь вы закончили.
Теперь проверьте ваш репозиторий git, он будет показывать имя ветки с цветными названиями.
Ссылки
https://gist.github.com/danielalvarenga/2df8cabbd6f3041c2378
Ответ или решение
Отображение текущей ветки Git в терминале Fedora
Если вы используете Fedora и хотите, чтобы в терминале отображалась текущая ветка или тег Git при переходе в директорию проекта, следуйте этому подробному руководству.
Шаг 1: Открытие файла конфигурации
Чтобы внести изменения в отображение, необходимо редактировать файл настроек вашего терминала ~/.bashrc
или ~/.bash_profile
. Для этого выполните следующие команды в терминале:
cd ~ # Переход в домашнюю директорию
ls -a # Проверяем наличие .bashrc или .bash_profile
Если файл .bashrc
существует, откройте его с помощью текстового редактора, такого как nano:
nano .bashrc
Шаг 2: Добавление функции для отображения ветки Git
Пролистайте в конец файла и добавьте следующий код:
# Функция для отображения названия текущей ветки Git
function parse_git_branch {
git branch 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
# Настройка цветовой палитры
RED="\[\033[01;31m\]"
YELLOW="\[\033[01;33m\]"
GREEN="\[\033[01;32m\]"
BLUE="\[\033[01;34m\]"
NO_COLOR="\[\033[00m\]"
# Промпт без имени хоста
PS1="$GREEN\u$NO_COLOR:$BLUE\w$YELLOW\$(parse_git_branch)$NO_COLOR\$ "
Эти строки создают функцию parse_git_branch
, которая будет получать текущую ветку и отображать её в терминале. Настроенный PS1
будет обновляться каждый раз, когда вы вводите команду в терминале.
Шаг 3: Применение изменений
Сохраните изменения в nano, нажав Ctrl + O
, а затем Enter
, и выйдите, нажав Ctrl + X
.
Чтобы применить изменения в текущем сеансе терминала, выполните:
source ~/.bashrc
Или перезапустите терминал с помощью:
exec bash
Замечание о временном поведении
Если после выполнения команды cd ..
(переход к родительской директории) по-прежнему отображается название ветки, не беспокойтесь. Решением этой проблемы является корректная реализация отображения ветки во время обновления промпта. Использование функции и настройка PS1
, как указано выше, должны перезапускать отображение при каждом вводе команды.
Таким образом, вы должны увидеть название ветки только в тех каталогах, которые являются репозиториями Git.
Заключение
Следуя этим шагам, вы можете легко настроить свой терминал на Fedora таким образом, чтобы он отображал текущую ветку Git в промпте. Это сделает работу с проектами более удобной и эффективной. Не забудьте время от времени проверять файл .bashrc
на наличие других полезных настроек, которые могут улучшить ваше взаимодействие с терминалом.