使用 libgit2 获取远程分支的 git 树的正确方法

Correct way to obtain the git tree of a remote branch with libgit2

我正在尝试使用树与树的比较来区分我的 HEAD 与远程分支。为了获得远程树,我首先尝试通过传递通过git_revparse_single获得的远程对象来使用git_tree_lookup。这失败了,即使我事先连接并获取了遥控器。
但是,如果在检查之后,我将对象指针转换为 git_commit * 并改用 git_commit_tree,它会成功并且 returns 我是远程树。
为什么一种方法有效而另一种无效?

因为 git_revparse_single 上的参考将 return 你 git_commit,而不是 git_tree。而且你不能将 git_commit 转换为 git_tree.

您使用 git_commit_tree return 从 git_commit 查找树是正确的。