如何使用 JGit 查找提交的分支?

Ton*_*y P 7 java git jgit

我需要使用 JGit 获取与特定提交关联的分支名称。我使用 JGit 获取存储库的提交 SHA 的完整列表,现在我需要知道它所属的分支的名称。

如果有人能让我知道如何实现这一目标,我将不胜感激。

Rüd*_*ann 4

在 Git 中,提交不属于分支。提交是不可变的,而分支可以更改它们的名称以及它们指向的提交。

如果存在直接指向提交或提交的后继的分支,则可以从分支(或标记或其他引用)访问提交。

在 JGit 中,NameRevCommand可用于查找直接指向提交的分支(如果有)。例如:

Map<ObjectId, String> map = git
  .nameRev()
  .addPrefix("refs/heads")
  .add(ObjectId.fromString("<SHA-1>"))
  .call();
Run Code Online (Sandbox Code Playgroud)

上面的代码片段在refs/heads命名空间中查找指向给定提交的引用。返回的映射最多包含一个条目,其中键是给定的提交 ID,值表示指向它的分支。