informative_git_prompt
informative_git_prompt copied to clipboard
Informative Git Prompt for Fish
This Project is outdated!
Informative git prompt was merged into Fish shell!
https://github.com/fish-shell/fish-shell/pull/880
Just run fish_config
and select Informative GIT Prompt
Informative GIT Prompt for Fish shell
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.
Examples
The prompt may look like the following:
-
(master↑3|✚1)
: on branchmaster
, ahead of remote by 3 commits, 1 file changed but not staged -
(status|●2)
: on branchstatus
, 2 files staged -
(master|✚7…)
: on branchmaster
, 7 files changed, some files untracked -
(master|✖2✚3)
: on branchmaster
, 2 conflicts, 3 files changed -
(experimental↓2↑3|✔)
: on branchexperimental
; your branch has diverged by 3 commits, remote by 2 commits; the repository is otherwise clean -
(:70c2952|✔)
: not on any branch; parent commit has hash70c2952
; the repository is otherwise clean
Prompt Structure
By default, the general appearance of the prompt is:
(<branch> <branch tracking>|<local status>)
The symbols are as follows:
- Local Status Symbols
-
✔
: repository clean -
●n
: there aren
staged files -
✖n
: there aren
unmerged files -
✚n
: there aren
changed but unstaged files -
…n
: there aren
untracked files
-
- Branch Tracking Symbols
-
↑n
: ahead of remote byn
commits -
↓n
: behind remote byn
commits -
↓m↑n
: branches diverged, other bym
commits, yours byn
commits
-
- Branch Symbol:
When the branch name starts with a colon:
, it means it's actually a hash, not a branch (although it should be pretty clear, unless you name your branches like hashes :-)
Install
- Move the file
__informative_git_prompt.fish
into~/.config/fish/functions
. - Configure your prompt in
~/.config/fish/config.fish
. For this you have to define functionfish_prompt
. Example function is insideexample_config.fish
- simply copy is enough. - Go in a git repository and test it!
Enjoy!
Example configuration (config.fish)
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