使用JGit获取远程存储库的默认分支

时间:2018-05-23 06:20:25

标签: java git jgit

我正在开发一个Git客户端,现在我正在尝试实现特定分支的结账。我有一个组合框,我用分支名称填充,我想找出默认的分支,以便我可以在连接到有效的Git存储库时将其设置为组合框中的预选项。

我正在列出所有远程分支,如下所示,但我无法弄清楚哪个是默认分支。

Ref

那么,有没有办法(标准或" hacky")来检测哪个console.log对象代表默认分支?我怎么能得到它的名字?

1 个答案:

答案 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"?