我需要知道与NGit在分离分支如何获得NGIT的实际标签?
我已经尝试列出的Git标签与
foreach(var tag in git.GetRepository().GetTags()){
}
当前标记(git checkout tagname
后),但我无法找到如何与这个标签与最后一次提交。
我需要知道与NGit在分离分支如何获得NGIT的实际标签?
我已经尝试列出的Git标签与
foreach(var tag in git.GetRepository().GetTags()){
}
当前标记(git checkout tagname
后),但我无法找到如何与这个标签与最后一次提交。
Git不会保存当前签出哪个标签。如果您想要可靠地访问此信息,则需要在检查标签时单独存储它。
但是,你可以让Git列出所有指向特定提交的引用。
ObjectId headCommitId = repository.resolve(Constants.HEAD);
Map<ObjectId, String> refs = git.nameRev()
.add(headCommitId)
.addPrefix(Constants.R_TAGS)
.call();
这段代码是用Java编写的,但应该很容易翻译成C#。它首先解析头引用,然后调用NameRevCommand
来列出指向此提交ID的所有引用。
addPrefix()
将参数限制为refs/tags/
名称空间中的参考值。
返回的Map包含提交id(key)和指向它的第一个ref,可以找到(value)。
就您的情况而言,您之前签出的标签应位于返回的参考文献中。要小心,如果为这个提交创建了多个标签,它们中的任何一个都可以被返回 - 不一定是早先签出的那个标签。
编辑2016年7月11日
或者,你可以从库中的所有标签的列表,git.tagList().call()
和搜索指向的问题提交的标签。
见我回答这个问题寻找提交ID到标记点的特殊性:List commits associated with a given tag with JGit
如果你觉得一个答案的问题解决了,请把它标记为通过点击绿色复“接受”标记。这有助于将重点放在仍然没有答案的旧帖子上。 –