1

可能重复:
仅显示 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\\\"

在 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 更简洁?

4

3 回答 3

4

以下对我有用:

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

如果您不在任何分支上(即您已经分离了 HEAD),那么这将只是 return HEAD,但听起来好像在您的用例中您总是希望在一个分支上。

更新:事实上它更简单,你可以这样做: git rev-parse --abbrev-ref HEAD

于 2011-07-22T11:15:03.343 回答
0
cat .git/HEAD | sed 's/.*\///'

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

于 2011-07-22T11:06:16.233 回答
0

没有 git 命令只给你当前分支,所以你必须修改它的输出来提取它:

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

解释:

  1. 获取分支列表
  2. 选择当前分支,前缀为*
  3. 去除*
于 2011-07-22T10:46:18.090 回答