libgit2返回:在TortoiseGit中找不到Refspec'refs / heads / origin / HEAD'错误

时间:2013-09-02 14:40:09

标签: git tortoisegit libgit2

启动TortoiseGit时出现此错误:

Error dialog screenshot

  

无法获得所有裁判   libgit2返回:未找到Refspec'refs / heads / origin / HEAD'

虽然烦人,但它并不妨碍我使用TortoiseGit。但是,我想让它消失,因为它是,恼人的。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:24)

更新答案

事实证明,为了更新 哪个分支<remote>/HEAD所指向的本地回购视图 ,您可以让git自动获取该来自遥控器的信息并在本地为您设置,而不必像我上面的旧解决方案那样用git symbolic-ref手动设置它:

git remote set-head <remote> --auto

# Or shorter
git remote set-head <remote> -a

请注意,此命令 实际上并未更改远程仓库本身的默认分支 。为此,如果您有权访问它,则可能需要use git symbolic-ref directly on the remote repo

旧答案

错误消息引用的问题是显然libgit2正在尝试读取refs/remotes/origin/HEAD指向的远程默认分支,但远程分支不存在,因此出错。

使用git branch -a,我的本地仓库认为origin/develop是远程默认分支:

remotes/origin/HEAD -> origin/develop

有一点origin/develop确实是我在GitHub上的origin回购中的默认分支,但它不再是master分支。 develop分支已从origin中删除,因为不再需要它。

所以我通过手动更新本地参考origin/HEAD以指向origin上的新默认分支来解决此问题:

git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master

或者,如果我还想在refs/remotes/origin/HEAD

的reflog中添加消息
git symbolic-ref -m "Update to new remote default branch" \
refs/remotes/origin/HEAD refs/remotes/origin/master

这解决了这个问题。另见:

  1. Documentation for git symbolic-ref
  2. Git: Correct way to change Active Branch in a bare repository?
  3. How do I change a Git remote HEAD to point to something besides “master”