Мне нужно было немного другое решение для Jenkins, потому что у него нет локальных копий ветвей. Таким образом, текущая фиксация должна соответствовать удаленным ветвям:
git ls-remote --heads origin | grep $(git rev-parse HEAD) | cut -d / -f 3
или без сети:
git branch --remote --verbose --no-abbrev --contains | sed -rne 's/^[^\/]*\/([^\ ]+).*$/\1/p'
Стоит также отметить, что это может возвращать несколько имен веток, если у вас несколько заголовков веток в одном коммите.
UPDATE:
Я только что заметил, что Дженкинс устанавливает переменную окружения GIT_BRANCH
, которая содержит значение типа origin/master
. Это также можно использовать для получения ветки git в Jenksin:
echo $GIT_BRANCH | cut -d / -f 2