如何仅从Git命令获取分支?
可能重复:如何仅从Git命令获取分支?,git,continuous-integration,qmake,buildbot,monotone,Git,Continuous Integration,Qmake,Buildbot,Monotone,可能重复: 我正在将单调的DVC移动到git。在我的构建设置中,我让qmake获取当前版本和当前分支(因为它们是在buildbot上构建的),以便将其用作define exists(_MTN):DEFINES += BUILDREVISION=\\\"$$system(mtn automate get_base_revision_id)\\\" else:DEFINES += BUILDREVISION=\\\"NOT \ BUILT \ FROM \ SOURCE \
我正在将单调的DVC移动到git。在我的构建设置中,我让qmake获取当前版本和当前分支(因为它们是在buildbot上构建的),以便将其用作define
exists(_MTN):DEFINES += BUILDREVISION=\\\"$$system(mtn automate get_base_revision_id)\\\"
else:DEFINES += BUILDREVISION=\\\"NOT \
BUILT \
FROM \
SOURCE \
REPOSITORY\\\"
# Check which branch we are building
exists(_MTN):DEFINES += BUILDBRANCH=\\\"$$system(mtn au get_option branch)\\\"
else:DEFINES += BUILDBRANCH=\\\"UNKNOWN\\\"
在git中,我可以做到:
exists(.git):DEFINES += BUILDREVISION=\\\"$$system(git rev-parse HEAD)\\\"
else:DEFINES += BUILDREVISION=\\\"NOT \
BUILT \
FROM \
SOURCE \
REPOSITORY\\\"
# Check which branch we are building
exists(.git):DEFINES += BUILDBRANCH=\\\"$$system(git show-branch --current)\\\"
else:DEFINES += BUILDBRANCH=\\\"UNKNOWN\\\"
我的问题是“git show branch--current”包含提交消息和一个新行字符,这是我的编译器不喜欢的。如何使git更简洁?没有git命令只提供当前分支,因此您必须修改其输出以提取它:
git branch --no-color 2> /dev/null | grep "*" | sed s/*\ //
1 2 3
说明:
*
*
没有git命令只提供当前分支,因此您必须修改其输出以提取它:
git branch --no-color 2> /dev/null | grep "*" | sed s/*\ //
1 2 3
说明:
*
*
sed's/*\/'
部分从行的开头删除“ref:refs/heads/”
sed's/*\/'
部分从行的开头删除了“ref:refs/heads/”。以下内容适用于我:
$ git rev-parse --symbolic-full-name --abbrev-ref HEAD
master
如果您不在任何分支上(即,您已经分离了HEAD),那么这将只返回HEAD
,但在您的用例中,听起来好像您总是希望位于分支上
更新:事实上,它更简单,您只需执行:
git rev parse--abbrev ref HEAD
以下操作对我有效:
$ git rev-parse --symbolic-full-name --abbrev-ref HEAD
master
如果您不在任何分支上(即,您已经分离了HEAD),那么这将只返回HEAD
,但在您的用例中,听起来好像您总是希望位于分支上
更新:事实上更简单,您只需执行:git rev parse--abbrev ref HEAD