使用libgit2获取远程HEAD?

时间:2013-03-19 18:12:04

标签: head git-remote libgit2

我似乎无法弄清楚如何将git_reference *送到特定遥控器的头部。

我有:

git_repository * repo = NULL;
git_reference *   ref = NULL;

/* ...load repository... */

if(git_reference_lookup(&ref, repo, "remotes/origin/HEAD"))
    printf("Error obtaining reference to remote HEAD!");

运行应用程序时会显示错误消息,表示未找到引用。但是,远程HEAD确实存在:

$: find .git/refs/*
.git/refs/heads
.git/refs/heads/master
.git/refs/remotes
.git/refs/remotes/origin
.git/refs/remotes/origin/HEAD
.git/refs/tags

为什么我无法获得远程HEAD的git_reference *

1 个答案:

答案 0 :(得分:3)

您需要指定引用的完整路径。例如:

int error = git_reference_lookup(&ref, repo, "refs/remotes/origin/HEAD");

libgit2无法为您refs/添加前缀,否则您将无法在其他位置打开引用,最明显的是HEAD引用。