通过执行以下任一操作,我可以找到当前的git分支名称:
git branch | awk '/^\*/ { print $2 }' git describe --contains --all HEAD
但是,当处于分离的HEAD状态时,例如在Jenkins maven构建的后期构建阶段(或在Travis git fetch中),这些命令将不起作用。
我当前的工作解决方案是这样的:
git show-ref | grep $(git log --pretty=%h -1) | sed 's|.*/\(.*\)|\1|' | sort -u | grep -v HEAD
它显示在HEAD提示上具有最后提交的任何分支名称。这可以正常工作,但我认为使用git-fu更强的人可能有更漂亮的解决方案?
更瓷器的方式:
git log -n 1 --pretty=%d HEAD # or equivalently: git show -s --pretty=%d HEAD
裁判将以格式列出(HEAD, master)-如果您打算在脚本中而不是供人类使用,则必须对其进行一些解析。
(HEAD, master)
您还可以自己更干净地实现它:
git for-each-ref --format='%(objectname) %(refname:short)' refs/heads | awk "/^$(git rev-parse HEAD)/ {print \$2}"
这样做的好处是可以将候选引用放在单独的行中,而无需多余的字符。