Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

To get a prompt which indicates Git-branch in Zsh

Tags:

git

prompt

zsh

I run the following codes separately as my prompt unsuccessfully in .zshrc. This suggests me that apparently I do not have a program called __git_ps1. It is not in MacPorts.

#1

PROMPT="$(__git_ps1 " \[\033[1;32m\] (%s)\[\033[0m\]")\$"$ 

#2

PROMPT="$(__git_ps1 " (%s)")\$"$ 

#3

# Get the name of the branch we are on git_prompt_info() {   branch_prompt=$(__git_ps1)   if [ -n "$branch_prompt" ]; then     status_icon=$(git_status)     echo $branch_prompt $status_icon   fi }  # Show character if changes are pending git_status() {   if current_git_status=$(git status | grep 'added to commit' 2> /dev/null); then     echo "☠"   fi } autoload -U colors colors setopt prompt_subst PROMPT=' %~%{$fg_bold[black]%}$(git_prompt_info) → %{$reset_color%}' 

How can you get a prompt which shows the name of a Git-branch?

like image 675
Léo Léopold Hertz 준영 Avatar asked Jul 14 '09 22:07

Léo Léopold Hertz 준영


People also ask

Does Git work with zsh?

git-prompt.sh is compatible with both Bash and Zsh. Zsh is powerful enough that there are entire frameworks dedicated to making it better.

How do I add a branch to git terminal?

The easiest way to create a Git branch is to use the “git checkout” command with the “-b” option for a new branch. Next, you just have to specify the name for the branch you want to create. To achieve that, you will run the “git checkout” command with the “-b” option and add “feature” as the branch name.


1 Answers

__git_ps1 is from git-completion.bash. In zsh you probably have to provide your own function to determine the current directories git branch. There are quite a few blog posts about a git prompt for zsh.

You just need:

  • a function to provide the branch name
  • enable prompt (command) substitution
  • add the function to your prompt

For example

git_prompt() {  ref=$(git symbolic-ref HEAD | cut -d'/' -f3)  echo $ref } setopt prompt_subst PS1=$(git_prompt)%# autoload -U promptinit promptinit 

Update: use the zsh vcs_info module instead of git_prompt()

setopt prompt_subst autoload -Uz vcs_info zstyle ':vcs_info:*' actionformats \     '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f ' zstyle ':vcs_info:*' formats       \     '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{5}]%f ' zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r'  zstyle ':vcs_info:*' enable git cvs svn  # or use pre_cmd, see man zshcontrib vcs_info_wrapper() {   vcs_info   if [ -n "$vcs_info_msg_0_" ]; then     echo "%{$fg[grey]%}${vcs_info_msg_0_}%{$reset_color%}$del"   fi } RPROMPT=$'$(vcs_info_wrapper)' 
like image 176
ko-dos Avatar answered Oct 15 '22 16:10

ko-dos