It’s never to late for git.

If not already done, every software developer must try GIT – the fast, distributed version control system. It’s such a nice and useful tool. Once every week I find a new little nice feature.

The last month I used the git-client together with a svn-remote repository and I will never use the svn client again. It is so handy to have the full history of the repository on my notebook.  I can commit my changes every time to my local repository and merging/branching is just fun.  I’m so much faster …

Here my path to git

Here my favorite git client in action (the command line client 😉 :

git command line

There are plugins for eclise, idea, windows, mac… So give it a try and have fun!

And if you want to have the little nice prompt add the following lines to your .bashrc:

...
#-----------------------------------
# git in prompt
#-----------------------------------
        RED="[33[0;31m]"
     YELLOW="[33[0;33m]"
      GREEN="[33[0;32m]"
       BLUE="[33[0;34m]"
  LIGHT_RED="[33[1;31m]"
LIGHT_GREEN="[33[1;32m]"
      WHITE="[33[1;37m]"
 LIGHT_GRAY="[33[0;37m]"
 COLOR_NONE="[e[0m]"

function parse_git_branch {
        git rev-parse --git-dir &> /dev/null
        git_status="$(git status 2> /dev/null)"
        branch_pattern="^# On branch ([^${IFS}]*)"
        remote_pattern="# Your branch is (.*) of"
        diverge_pattern="# Your branch and (.*) have diverged"

        if [[ ! ${git_status} =~ "working directory clean" ]]; then
                state="${RED}?"
        else
                state="${GREEN}?"
        fi

        # add an else if or two here if you want to get more specific
        if [[ ${git_status} =~ ${remote_pattern} ]]; then
                if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then
                        remote="${YELLOW}?"
                else
                        remote="${YELLOW}?"
                fi
        fi

        if [[ ${git_status} =~ ${diverge_pattern} ]]; then
                remote="${YELLOW}?"
        fi

        if [[ ${git_status} =~ ${branch_pattern} ]]; then
                branch=${BASH_REMATCH[1]}
                echo " (${branch})${remote}${state}"
        fi
}
function prompt_func() {
        previous_return_value=$?;
        prompt="${GREEN}${USER:-$(type whoami >/dev/null && whoami)}@$(type uname >/dev/null && uname -n) ${BLUE}[w${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE} "
        if test $previous_return_value -eq 0
        then
                # PS1="${prompt}? "
                PS1="${prompt} \$ "
        else
                #PS1="${prompt}${RED}?${COLOR_NONE}"
                PS1="${prompt}${RED}\$ ${COLOR_NONE}"
        fi
}

PROMPT_COMMAND=prompt_func

I found this script at github and changed it a little bit. Thx to trapni.