2015-02-23 242 views
4

我的團隊將dev和master的用法作爲幾個repos的默認分支交替使用,我想編寫一個腳本來檢查默認分支,當進入一個目錄時。git - 如何獲取默認分支?

當這些回購中的某些回收請求被打開時,它們默認爲'dev'或'master'作爲合併目標。

我明白如何設置此信息,但無法恢復: https://help.github.com/articles/setting-the-default-branch/

是否有可用的一個git命令確定遠程存儲庫默認分支?

+3

默認分支是github的東西,而不是git的東西。 – 2015-02-23 03:10:44

+0

您可以使用GitHub API,如下面的問題所示:http://stackoverflow.com/questions/16500461/how-do-i-find-the-default-branch-for-a-repository-using-the-github -v3-api – 2015-02-23 03:15:04

回答

2

是否有git命令可用來確定遠程存儲庫的默認分支?

沒有,似乎沒有爲:

git ls-remote -v https://github.com/<user>/<repo> 

將列出所有的分支,而不是HEAD(這是指定默認分支的symref)

同樣, GitHub Reference API可以列出標題,但不包括HEAD。

1

這對我的作品使用Git 2.1.10,使用從GitHub克隆資源庫:

git branch -r --points-at refs/remotes/origin/HEAD 

這種方法的主要問題是,它列出遠程分支指向頭;然而,輸出包括提示:

origin/HEAD -> origin/master 
    origin/master 
    origin/test123 

所以,你可以後期處理與grep或類似的輸出,以找到一個帶箭頭:

git branch -r --points-at refs/remotes/origin/HEAD | grep '\->' | cut -d' ' -f5 | cut -d/ -f2 
0

似乎有點像一種變通方法解決方案但是這似乎工作:

$ cat .git/refs/remotes/origin/HEAD 
ref: refs/remotes/origin/master 
4

在從GitHub克隆回購測試與git的2.9.4(但在其他版本可能工作):

$ git symbolic-ref refs/remotes/origin/HEAD | sed '[email protected]^refs/remotes/origin/@@' 
master 
+1

謝謝!一個注意事項 - 非常確定'/'是分支名稱中的合法字符(這是標籤),所以我使用'... | sed的@^refs/remotes/origin/@@'' – nhed 2017-07-05 15:19:38

+1

@nhed這確實比較好,我會更新我的答案。 – danielkza 2017-07-05 20:43:15