zsh-显示git分支是否有未推送的提交

Den*_*ler 5 git ssh terminal zsh

实际上,我使用的是我的zsh主题的稍作修改的版本blinks。它显示一条SSH语句,只是为了与我的本地终端产生光学差异。如果分支中有未提交的更改,它还会显示分支和一个小星星。

是否有可能表明有未推动的承诺?也许还有一点指标。

# https://github.com/blinks zsh theme

function _prompt_char() {
  if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
    echo "%{%F{blue}%}±%{%f%k%b%}"
  else
    echo ' '
  fi
}

case ${SOLARIZED_THEME:-dark} in
    light) bkg=white;;
    *)     bkg=black;;
esac

ZSH_THEME_GIT_PROMPT_PREFIX=" [%{%B%F{blue}%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{%f%k%b%K{${bkg}}%B%F{green}%}]"
ZSH_THEME_GIT_PROMPT_DIRTY=" %{%F{red}%}*%{%f%k%b%}"
ZSH_THEME_GIT_PROMPT_CLEAN=""

PROMPT='%{%f%k%b%}

%{%K{black}%B%F{green}%}%n%{%B%F{blue}%}@%{%B%F{cyan}%}%m%{%B%F{green}%} %{%B%F{red}%}!!SSH!! %{%b%F{yellow}%K{black}%}%~%{%B%F{green}%}$(git_prompt_info)%E%{%f%k%b%}
%{%K{black}%}$(_prompt_char)%{%K{black}%} %#%{%f%k%b%} '

RPROMPT='!%{%B%F{cyan}%}%!%{%f%k%b%}'
Run Code Online (Sandbox Code Playgroud)

在此先感谢denym

num*_*er5 1

您应该使用vcs_infozsh 附带的模块。

有一个非常详细的教程向您展示如何做到这一点:http://arjanvandergaag.nl/blog/customize-zsh-prompt-with-vcs-info.html

通常,您只需要${vcs_info_msg_0_}在正确加载vcs_info模块后将其放入 $PROMPT 变量中,但如果您不喜欢默认格式,则可以自定义提示格式。

BTW,vcs_info顾名思义,还支持其他 VCS,例如 svn、hg、cvs 等。

  • 那么,如何配置“vcs_info”来显示有关未推送的提交(即正在跟踪的分支中不存在的提交)的信息?这个答案充其量是不完整的。 (3认同)