2011-07-22 86 views
1

可能重复:
Show just the current branch in Git如何从Git命令获取分支?

我感动我的单调DVCS与git。在我的构建设置中,我有qmake获取当前版本和当前分支(因为这些分支是基于buildbot构建的),因此它可以用作定义。

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\\\" 

在混帐我可以这样做:

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\\\" 

我的问题是,“混帐秀分支--current”具有与它的提交信息,并在一个新的行字符,这我的编译器不喜欢。我怎样才能让git更简洁?

回答

4

对我来说,以下工作:

$ git rev-parse --symbolic-full-name --abbrev-ref HEAD 
master 

如果你在任何一间分行不是(即你分离的头),那么这将只是返回HEAD,但它听起来就好像你的使用情况,你总是期待着在一个分支上。

更新:其实这是更简单,你可以做:git rev-parse --abbrev-ref HEAD

0

没有git的命令让你只在当前的分支,所以你必须修改其输出将其解压:

git branch --no-color 2> /dev/null | grep "*" | sed s/*\ // 
1         2   3 

说明:

  1. 得到分支列表
  2. 选择当前分支,前缀为*
  3. 删除*
0
cat .git/HEAD | sed 's/.*\///' 

sed 's/.*\///'部分从行的开头删除“ref:refs/heads /”。