在Unix或GNU脚本环境(例如Linux发行版、Cygwin、OSX)中,确定当前在工作目录中签出哪个Git分支的最佳方法是什么?
这种技术的一个用途是自动标记版本(就像svnversion对Subversion所做的那样)。
请参阅我的相关问题:如何以编程方式确定Git签出是否是标记,如果是,标记的名称是什么?
在Unix或GNU脚本环境(例如Linux发行版、Cygwin、OSX)中,确定当前在工作目录中签出哪个Git分支的最佳方法是什么?
这种技术的一个用途是自动标记版本(就像svnversion对Subversion所做的那样)。
请参阅我的相关问题:如何以编程方式确定Git签出是否是标记,如果是,标记的名称是什么?
当前回答
我是这样做的:
git branch | sed --quiet 's/* \(.*\)/\1/p'
输出如下所示:
$ git branch | sed --quiet 's/* \(.*\)/\1/p'
master
$
其他回答
这个适合我。如果您希望返回纯字符串,那么——no-color部分非常重要。
git branch --no-color | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
从这个答案:https://stackoverflow.com/a/1418022/605356:
$ git rev-parse --abbrev-ref HEAD
master
显然适用于Git 1.6.3或更新版本。
我在这里尝试最简单和最不言自明的方法:
git status | grep "On branch" | cut -c 11-
我在bash文件中使用了这个方法。
git branch | grep '^*' | sed 's/* //'
################bash file###################
#!/bin/bash
BRANCH=$(git branch | grep '^*' | sed 's/* //' )
echo $BRANCH
你可以使用 git name-rev—name-only HEAD