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

时间:2011-09-21 14:35:39

标签: jgit

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

请提供相同的代码段。

2 个答案:

答案 0 :(得分:11)

Git object model将标记描述为包含特定对象信息的对象,即。因此,在纯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());
    }
}

答案 1 :(得分:4)

如果您知道提交只有一个标记,则可以在更新版本的JGit(describe)中使用~ November 2013

Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call()

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