gpt4 book ai didi

git - 在 Zsh 中获得 Git-prompt 工作而没有函数中的错误

转载 作者:太空狗 更新时间:2023-10-29 13:57:37 25 4
gpt4 key购买 nike

本题基于the thread .

我现在有以下 Git 提示符。在 cding 到非 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

我当前在 Zsh 中的 Git-prompt 代码

 # 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%}'

问题是以下代码导致非 Git 文件夹的警告

get_git_dirty() {
git diff --quiet || echo '*'
}

我试图通过将错误重定向到/tmp/来解决错误,但没有成功

  get_git_dirty() {
git diff --quiet 2>/tmp/error || echo '*' 2>/tmp/error
}

如何去除非 git 目录的警告消息?

最佳答案

使用

REL=$(git rev-parse --show-prefix 2>/dev/null) || { echo "$@" ; exit ; }

BR=$(git symbolic-ref HEAD 2>/dev/null) || { echo "$@" ; exit ; }

提前退出。

更明确地说:您不能使用 git diff --quiet 的退出状态来检查您是否在工作存储库中,因为 git diff 然后“如果存在差异则以 1 和 0 退出意味着没有区别。” (参见 git-diff 联机帮助页)

关于git - 在 Zsh 中获得 Git-prompt 工作而没有函数中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1132725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com