Skip to content

Instantly share code, notes, and snippets.

@hugosenari
Last active October 7, 2015 18:48
Show Gist options
  • Select an option

  • Save hugosenari/3209104 to your computer and use it in GitHub Desktop.

Select an option

Save hugosenari/3209104 to your computer and use it in GitHub Desktop.
Bash util for git

Bash Script to use with git

With this your console print:

USER_NAME@MACHINE_NAME DIR_NAME (BRANCH_NAME:STATUS)$
```c 

Where status are:
M when current repo has modified
A when current repo has added file
? when current repo has untracked file
D when current repo has delected file
R when current repo has moved file

```bash
#when you're in master and has modification
USER_NAME@MACHINE_NAME DIR_NAME (master:M)$
#when you're in devel and has new file
USER_NAME@MACHINE_NAME DIR_NAME (devel:A)$
#when you aren't in git repo dir
USER_NAME@MACHINE_NAME DIR_NAME $
#git info
# return ??MAD
function get_git_diff {
GIT_STATUS="`git status -s 2>/dev/null|cut -c 1,2`"
if [ "$GIT_STATUS" ]; then
GIT_MOD_F="`printf "$GIT_STATUS"|cut -c-2|tr "??" "?"|tr -d " "|sort -u|tr -d "\n"`"
printf "$GIT_MOD_F"
fi
}
# return branch name
function get_git_branch {
GIT_BRANCH="`git branch 2>/dev/null|grep -e ^* | tr -d \*\ `"
if [ "$GIT_BRANCH" ]; then
printf "$GIT_BRANCH"
fi
}
# FROM https://wiki.archlinux.org/index.php/Color_Bash_Prompt#From_Arch_Forum_.231
bash_prompt() {
case $TERM in
xterm*|rxvt*)
local TITLEBAR='\[\033]0;\u:${NEW_PWD}\007\]'
;;
*)
local TITLEBAR=""
;;
esac
local NONE="\[\033[0m\]" # unsets color to term's fg color
# regular colors
local K="\[\033[0;30m\]" # black
local R="\[\033[0;31m\]" # red
local G="\[\033[0;32m\]" # green
local Y="\[\033[0;33m\]" # yellow
local B="\[\033[0;34m\]" # blue
local M="\[\033[0;35m\]" # magenta
local C="\[\033[0;36m\]" # cyan
local W="\[\033[0;37m\]" # white
# emphasized (bolded) colors
local EMK="\[\033[1;30m\]"
local EMR="\[\033[1;31m\]"
local EMG="\[\033[1;32m\]"
local EMY="\[\033[1;33m\]"
local EMB="\[\033[1;34m\]"
local EMM="\[\033[1;35m\]"
local EMC="\[\033[1;36m\]"
local EMW="\[\033[1;37m\]"
# background colors
local BGK="\[\033[40m\]"
local BGR="\[\033[41m\]"
local BGG="\[\033[42m\]"
local BGY="\[\033[43m\]"
local BGB="\[\033[44m\]"
local BGM="\[\033[45m\]"
local BGC="\[\033[46m\]"
local BGW="\[\033[47m\]"
local BC=${B} # brachs color
[ "$(get_git_branch)" == "master" ] && BC=${R} # master branch color
local SEP="$EMB\342\224\200"
local BR="\n$EMB\342\224\224${SEP} > "
local DOWN="$EMB\342\224\214"
local BEG=" $EMB["
local ENDY="$EMB] "
local AT="@"
local USER_AT="${DOWN}${SEP}${BEG}${G}\u${AT}\h${ENDY}"
local GIT_STAT="${SEP}${BEG}${BC}$(get_git_branch):${Y}$(get_git_diff)${ENDY}"
local HISTORY="${SEP}${BEG}${G}!\!${ENDY}"
local DIR="${BR}${Y}\w${NONE} $ "
PS1="${TITLEBAR}${USER_AT}${GIT_STAT}${HISTORY}${DIR}"
}
PROMPT_COMMAND=bash_prompt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment