JGit:检索与git提交相关联的标记

Kam*_*mal 8 jgit

我想使用JGit API来检索与特定提交哈希相关联的标签(如果有的话)?

请提供相同的代码段.

Mar*_*zek 11

Git对象模型将标记描述为包含特定对象即信息的对象.因此,在纯git中获取所需信息是不可能的(提交对象没有相关标签的信息).这应该"向后"完成,获取标记对象,然后引用特定的提交.

因此,如果您想获取有关为特定提交指定的标记的信息,您应该迭代它们(标记)并选择适当的.

List<RevTag> list = git.tagList().call();
ObjectId commitId = ObjectId.fromString("hash");
Collection<ObjectId> commits = new LinkedList<ObjectId>();
for (RevTag tag : list) {
    RevObject object = tag.getObject();
    if (object.getId().equals(commitId)) {;
        commits.add(object.getId());
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 并且 org.eclipse.jgit.api.Git.tagList().call() 返回 List&lt;Ref&gt;。 (2认同)

Max*_*ger 6

如果你知道你的提交只有一个标签,你可以在 JGit 的更新版本(~2013 年 11 月)中使用describe

Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call()
Run Code Online (Sandbox Code Playgroud)

您可以解析结果,以查看标签是否存在,但如果可以有多个标签,则应使用 Marcins 解决方案。