How to find the current git branch in detached HEAD state

前端 未结 6 1795
遥遥无期
遥遥无期 2020-12-04 12:58

I can find the current git branch name by doing either of these:

git branch | awk \'/^\\*/ { print $2 }\'
git describe --contains --all HEAD
<
6条回答
  •  臣服心动
    2020-12-04 13:31

    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
    

提交回复
热议问题