Этот вопрос основан на the thread.Чтобы получить Git-prompt работу в Zsh без ошибки в функции
У меня есть следующее Git-prompt на данный момент. После получения cd
я получаю следующее предупреждение в папку, отличную от Git.
fatal: Not a git repository (or any of the parent directories): .git
fatal: git diff [--no-index] takes two paths
fatal: Not a git repository (or any of the parent directories): .git
fatal: git diff [--no-index] takes two paths
Мой текущий код Git-приглашение в Zsh
# get the name of the branch we are on
git_prompt_info() {
ref=$(git symbolic-ref HEAD | cut -d'/' -f3)
echo $ref
}
get_git_dirty() {
git diff --quiet || echo '*'
}
autoload -U colors
colors
setopt prompt_subst
PROMPT='%{$fg[blue]%}%c %{$fg_bold[red]%}$(git_prompt_info)$(get_git_dirty)%{$fg[blue]%} $ %{$reset_color%}'
Проблема заключается в следующем коде, который вызывает предупреждение для не-ГИТ папки
get_git_dirty() {
git diff --quiet || echo '*'
}
я пытался устранить ошибку путем перенаправления ошибок в/tmp/неудачно, так что
get_git_dirty() {
git diff --quiet 2>/tmp/error || echo '*' 2>/tmp/error
}
Как вы можете избавиться от предупреждающих сообщений для каталогов, не содержащих git?
Что означают 'REL' и' BR'? --- Являются ли эти имена встроенными в Git? –
Я получаю то же сообщение об ошибке, что и с кодом * seth *. Это говорит о том, что проблема все еще находится в функции * get_git_dirty *. --- В моем приглашении нет имени филиала с вашим кодом. Он показывает только звезду, указывающую, что вам нужно «git-add» и «git-commit». –
REL и BR - переменные, используемые в оперативном коде для каталога RELative в проекте, и текущий BRanch. Важной частью является выход из git-специфической части, когда git-symbolic-ref или git-rev-parse возвращают ненулевой код; git-diff не может использоваться таким образом, потому что ненулевой выход используется для чего-то другого. –