2011-07-22 138 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 /」。