Informative Git Prompt for Fish
This prompt is a port of the Informative git prompt for bash which is based on Informative git prompt for zsh. Original idea is from blog post A zsh prompt for Git users.
The prompt may look like the following:
(master↑3|✚1)
: on branch master
, ahead of remote by 3 commits, 1 file changed but not staged(status|●2)
: on branch status
, 2 files staged(master|✚7…)
: on branch master
, 7 files changed, some files untracked(master|✖2✚3)
: on branch master
, 2 conflicts, 3 files changed(experimental↓2↑3|✔)
: on branch experimental
; your branch has diverged by 3 commits, remote by 2 commits; the repository is otherwise clean(:70c2952|✔)
: not on any branch; parent commit has hash 70c2952
; the repository is otherwise cleanBy default, the general appearance of the prompt is:
(<branch> <branch tracking>|<local status>)
The symbols are as follows:
✔
: repository clean●n
: there are n
staged files✖n
: there are n
unmerged files✚n
: there are n
changed but unstaged files…n
: there are n
untracked files↑n
: ahead of remote by n
commits↓n
: behind remote by n
commits↓m↑n
: branches diverged, other by m
commits, yours by n
commits:
, it means it's actually a hash, not a branch (although it should be pretty clear, unless you name your branches like hashes :-)__informative_git_prompt.fish
into ~/.config/fish/functions
.~/.config/fish/config.fish
. For this you have to define function fish_prompt
. Example function is inside
example_config.fish
- simply copy is enough.Enjoy!
function fish_prompt --description 'Write out the prompt'
set -l last_status $status
set_color $fish_color_cwd
echo -n (prompt_pwd)
set_color normal
__informative_git_prompt
if not test $last_status -eq 0
set_color $fish_color_error
end
echo -n ' $ '
end