Не может подавить ошибку ветки git, когда нет в репозитории git - PullRequest
0 голосов
/ 31 мая 2018

Мне бы хотелось, чтобы в моей командной строке отображалась текущая ветка в строке приглашения 1 (PS1).Команда работает в git-репозиториях, но когда ее нет в git-репо, я получаю правильное сообщение об ошибке: fatal: Not a git repository (or any of the parent directories): .git

Я хотел бы подавить это сообщение об ошибке, в противном случае каждый раз, когда я переключаю каталоги, и меня нет вgit repo, эта ошибка выводится на терминал.

Я прочитал о подавлении вывода терминала, отправив вывод ошибки на нулевое устройство /dev/null, но сообщение об ошибке все еще печатается на моем терминале.

Вот команда, которую я использую для извлечения текущей ветви:

git branch 2>/dev/null | grep '*' | cut -d ' ' -f2.

1 Ответ

0 голосов
/ 31 мая 2018

Обязательно экранируйте $ в конструкции $(), чтобы он оценивался заново при создании каждого приглашения, а не только при установке переменной PS1.

Вот как это выглядиткак для меня на практике:

# Set PS1
$ PS1="\$(git branch 2>/dev/null | grep '*' | cut -d ' ' -f 2) $ "

# Currently in directory that is not a Git repository, change into one.
 $ cd dotfiles/

# Git branch is then displayed in the prompt, leave the directory.
master $ cd ..

# No git branch displayed, change back into it for good measure.
 $ cd dotfiles/

# Branch is displayed again.
master $
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...