While creating set of bash_completion rules for mc-tool, I read some other rule files to see how things are done. I happened to spot some useful functions from git's completion, mainly git_ps1, which prints the name of the current branch.
Having the name of the current branch can save some mistakes every now and then, and with environment variable GITPS1SHOWDIRTYSTATE you can even make it show if there are non-staged and/or non-committed changes in your tree.
This is how I used it:
PS1='\u@\h \w$(GIT_PS1_SHOWDIRTYSTATE=1 __git_ps1)\$ '
By default the output of git_ps1 is " (name-of-branch)", or "" if current directory does not belong to a git tree. The format string can be given on command line, like " (%s)".
The current version seems to have a small glitch that causes it to print give (unknown) for home directory, if you use git global settings.