I can find the current git branch name by doing either of these:
git branch | awk \'/^\\*/ { print $2 }\'
git describe --contains --all HEAD
<
I needed a bit different solution for Jenkins because it does not have local copies of the branches. So the current commit must be matched against the remote branches:
git ls-remote --heads origin | grep $(git rev-parse HEAD) | cut -d / -f 3
or without network:
git branch --remote --verbose --no-abbrev --contains | sed -rne 's/^[^\/]*\/([^\ ]+).*$/\1/p'
It's also worth noting that this might return multiple branch names when you have multiple branch heads at the same commit.
UPDATE:
I just noticed that Jenkins sets GIT_BRANCH environment variable which contains a value like origin/master. This can be used to get git branch in Jenksin too:
echo $GIT_BRANCH | cut -d / -f 2