2013-05-02 142 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)