Skip to content

Instantly share code, notes, and snippets.

@mikewadhera
Created July 1, 2010 03:15
Show Gist options
  • Save mikewadhera/459515 to your computer and use it in GitHub Desktop.
Save mikewadhera/459515 to your computer and use it in GitHub Desktop.
git bash prompt
1. Install to ~/.git_bash_prompt
2. Stick this in your ~/.profile or ~/.bash_profile or ~/.bashrc
if [ -f ~/.git_bash_prompt ]; then
. ~/.git_bash_prompt
fi
3. PROFIT!
git_check_changes ()
{
git status | sed -n '
1h
1!H
$ {
g
s/Untracked files:/\?/
s/Changed but not updated/\*/
s/Changes to be committed/\^/
s/[^\^\?*]//g
p
}
'
}
git_remote_changes ()
{
local branch="$(git branch | grep '^*' | sed -e 's/^\* *//')"
git log --pretty=oneline $branch...origin/$branch 2>/dev/null | sed -n '
1h
1!H
$ {
g
s/.*/>/g
p
}
'
}
# Lars: a copy of the __git_ps1 script for git-completion.bash modified to add
# ? - untracked files
# * - changed but not added to commit
# ^ - changed and to be committed
git_bash_prompt ()
{
local g="$(git rev-parse --git-dir 2>/dev/null)"
if [ -n "$g" ]; then
local r
local b
if [ -d "$g/../.dotest" ]
then
if test -f "$g/../.dotest/rebasing"
then
r="|REBASE"
elif test -f "$g/../.dotest/applying"
then
r="|AM"
else
r="|AM/REBASE"
fi
b="$(git symbolic-ref HEAD 2>/dev/null)"
elif [ -f "$g/.dotest-merge/interactive" ]
then
r="|REBASE-i"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -d "$g/.dotest-merge" ]
then
r="|REBASE-m"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -f "$g/MERGE_HEAD" ]
then
r="|MERGING"
b="$(git symbolic-ref HEAD 2>/dev/null)"
else
if [ -f "$g/BISECT_LOG" ]
then
r="|BISECTING"
fi
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
then
if ! b="$(git describe --exact-match HEAD 2>/dev/null)"
then
b="$(cut -c1-7 "$g/HEAD")..."
fi
fi
fi
if [ -n "$1" ]; then
printf "$1" "${b##refs/heads/}$r"
else
printf "%s$(git_check_changes)$(git_remote_changes) " "${b##refs/heads/}$r"
fi
fi
}
export PS1='\[\033[0;38m\][ \[\033[0;33m\]\w\[\033[0;38m\] ] \[\033[0;31m\]$(git_bash_prompt)\[\033[0m\]'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment