我正在开发一个 Git 客户端,现在我正在尝试实现特定分支的签出。我有一个填充了分支名称的组合框,我想找出哪个分支是默认分支,以便在连接到有效的 Git 存储库时可以将其设置为组合框中的预选项目。
我列出了所有远程分支,如下所示,但我无法弄清楚哪个是默认分支。
Map<String, Ref> callAsMap = Git.lsRemoteRepository()
.setRemote("https://github.com/example")
.setCredentialsProvider(credentialsProvider)
.callAsMap();
Run Code Online (Sandbox Code Playgroud)
那么,有没有一种方法(标准或“hacky”)来检测哪个Ref对象代表默认分支?我怎样才能得到它的名字?
Repository::getFullBranch返回本地存储库的当前分支。
要获取远程存储库的默认分支,您需要询问其HEAD引用。您发布的代码片段返回的地图应该包含一个带有键的条目HEAD和(如果我没有记错的话)一个表示默认分支名称的值。
如果HEAD引用一个对象 id,您可以获得所有远程引用的列表,以repository.getRefDatabase().getRefs(Constants.R_REMOTES)查找 HEAD id。这种方法可能不准确,因为多个引用可能指向同一个对象 ID。
请注意,远程存储库不需要通告默认分支。
另请参阅这些帖子,了解 C-Git 如何查找默认分支:git - 如何获取默认分支?以及什么决定了“git clone”之后的默认分支?)
| 归档时间: |
|
| 查看次数: |
2370 次 |
| 最近记录: |