我需要知道 Ngit 在分离分支中的当前标签(在 a 之后git checkout tagname
)
我试图列出 Git 标签
foreach(var tag in git.GetRepository().GetTags()){
}
但我无法找到如何将此标签与最后一次提交相关联。
Git 不存储当前签出的标签。如果您想可靠地访问此信息,则需要在签出标签时单独存储它。
但是,您可以让 Git 列出所有指向某个提交的引用。
ObjectId headCommitId = repository.resolve( Constants.HEAD );
Map<ObjectId, String> refs = git.nameRev()
.add( headCommitId )
.addPrefix( Constants.R_TAGS )
.call();
该片段是用 Java 编写的,但应该很容易翻译成 C#。它首先解析 HEAD 引用,然后调用NameRevCommand
列出所有指向此提交 id 的引用。
addPrefix()
将引用限制为refs/tags/
命名空间中的引用。
返回的 Map 包含提交 id(键)和指向它的第一个 ref 可以找到(值)。
在您的情况下,您之前签出的标签应该在返回的参考文献中。请注意,如果为此提交创建了多个标签,则可能会返回其中任何一个标签 - 不一定是之前签出的标签。
编辑 2016-07-11
或者,您可以从存储库中获取所有标签的列表,git.tagList().call()
并搜索指向相关提交的标签。
有关查找标记指向的提交 id 的特殊性,请参阅我对这个问题的回答:List commits associated with a given tag with JGit