我正在开发一个Git客户端,现在我正在尝试实现特定分支的结账。我有一个组合框,我用分支名称填充,我想找出默认的分支,以便我可以在连接到有效的Git存储库时将其设置为组合框中的预选项。
我正在列出所有远程分支,如下所示,但我无法弄清楚哪个是默认分支。
Ref
那么,有没有办法(标准或" hacky")来检测哪个console.log
对象代表默认分支?我怎么能得到它的名字?
答案 0 :(得分:1)
Repository::getFullBranch
返回本地存储库的当前分支。
要获取远程存储库的默认分支,您需要询问其HEAD
ref。您发布的代码段返回的地图应包含一个带有键HEAD
的条目,并且(如果我没有记错的话)是一个表示默认分支名称的值。
如果HEAD
引用了对象ID,则可以获取所有具有repository.getRefDatabase().getRefs(Constants.R_REMOTES)
的远程引用的列表,以查找HEAD ID。这种方法可能不准确,因为多个引用可能指向相同的对象ID。
请注意,远程存储库不需要通告默认分支。
另请参阅这些帖子,了解C-Git如何找到默认分支:git - how to get default branch?和What determines default branch after "git clone"?)