2013-05-02 131 views
4

其实我使用的是我的zsh主题blinks的稍微修改版本。它显示了一个SSH声明,仅用于我本地终端的光学差异。 另外它显示分支和一个小星星,如果在分支中有未提交的更改。zsh - 显示git分支是否有提交过的提交

是否有可能表明存在不必要的承诺?也许还有一个小指标。

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

在此先感谢 denym

+2

你可以确定是否有没有网络往返unpushed提交?那么,你不希望它在你的提示... – 2013-05-02 14:37:44

回答

0

你应该使用vcs_info模块附带zsh。

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

通常你只需要拥有${vcs_info_msg_0_}在$提示符变量您正确加载vcs_info模块后,但你可以自定义提示格式,如果你不喜欢默认的。

顺便说一句,vcs_info,正如名称所建议的,也支持其他VCS,例如, SVN,汞,CVS等

+0

那么,如何配置'vcs_info'来显示有关unpushed提交的信息(即提交,不存在于被跟踪的分支)?最好的答案是不完整的。 – chepner 2013-05-04 15:49:57

+0

@chepner如果您有一段时间阅读我在上面的答案中链接的文章,您可能已经知道如何去做。仅供参考,从制品复制 >%u显示在存储库 不分阶段变化>%C显示上演在存储库 > > zstyle变化 ':vcs_info:git的*' 格式“%S%R /%S%B (%a)%m%u%c“ – number5 2013-05-06 06:29:59

0

只是测试输出从this answer的命令。这会输出您的HEAD状态,而不是您当地的origin/master,这与您在遥控器上执行操作时所获得的结果差不多,正如道格拉斯在其评论中所指出的那样,这是一个不幸的想法。

1

只需设置ZSH_THEME = “mortalscumbag” 在〜/ .zshrc ......它支持 “unpushed” 状态......

1 file changed, 1 insertion(+), 1 deletion(-) 

(ssh) [email protected] ‹ master ↑ › : ~/.oh-my-zsh 

的 “向上箭头”显示有没有提交的提交...

853102c dosdok 
(END)