Diese Frage basiert auf the thread.Um Git-Prompt-Arbeit in Zsh ohne einen Fehler in einer Funktion zu erhalten
Ich habe die folgende Git-Eingabeaufforderung im Moment. Ich bekomme die folgende Warnung nach cd
in einem Nicht-Git-Ordner.
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
Meine aktuellen Code für Git-prompt in 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%}'
Das Problem ist der folgende Code, der die Warnung für Nicht-Git Ordner verursacht
get_git_dirty() {
git diff --quiet || echo '*'
}
Ich habe versucht, löse den Fehler, indem du Fehler nach/tmp/vergeblich umleitest, so dass
get_git_dirty() {
git diff --quiet 2>/tmp/error || echo '*' 2>/tmp/error
}
Wie können Sie die Warnmeldungen für Nicht-Git-Verzeichnisse loswerden?
Wofür stehen 'REL' und' BR'? --- Sind diese Namen in Git eingebaut? –
Ich bekomme die gleiche Fehlermeldung wie mit * seth * s Code. Das deutet darauf hin, dass das Problem immer noch in der Funktion * get_git_dirty * liegt. --- Meine Eingabeaufforderung hat nicht den Zweignamen mit Ihrem Code. Es zeigt nur den Stern an, der anzeigt, dass Sie 'git-add' und' git-commit' brauchen. –
REL und BR sind Variablen, die im Eingabeaufforderungscode für RELative Verzeichnis innerhalb des Projekts und aktuelle BRanch verwendet werden. Der wichtige Teil besteht darin, den git-spezifischen Teil zu beenden, wenn git-symbolic-ref oder git-rev-parse einen von Null verschiedenen Code zurückgeben; git-diff kann nicht auf diese Weise verwendet werden, da der Wert ungleich null für etwas anderes verwendet wird. –