如何在libgit2中获取当前分支的名称?

Jak*_*ake 5 libgit2

我试图使用libgit2来读取当前分支的名称.我必须做某种决心吗?

我试过用

git_branch_lookup
Run Code Online (Sandbox Code Playgroud)

来查找git_referenceHEAD,但它会导致

Unable to find local branch 'HEAD'
Run Code Online (Sandbox Code Playgroud)

谢谢!

nul*_*ken 8

跑步git branch -a没有列出HEAD.在libgit2中,HEAD也不被认为是有效的分支.这只是一个参考.

如果您想要发现哪个引用是当前分支,那么您应该

  • 加载当前HEAD参考(尝试git_repository_head()方便)
  • 确定其类型(使用git_reference_type())
  • 根据其类型(GIT_REF_SYMBOLICGIT_REF_OID)检索以下之一
    • 分支的名称(使用git_reference_symbolic_target())
    • 提交指向(使用git_reference_target())

  • @ xav0989请注意,这些函数有不同的用途:`git_reference_resolve`将剥离引用,直到找到直接引用然后返回它的oid.`git_reference_resolve`将接受直接或符号引用.`git_reference_target`只接受直接引用.`git_reference_symbolic_target`只接受符号引用作为输入,并返回指向的引用的名称(可以是直接或另一个链式符号引用). (2认同)