【问题标题】:libgit2 returned: Refspec 'refs/heads/origin/HEAD' not found error in TortoiseGitlibgit2 返回:Refspec 'refs/heads/origin/HEAD' not found 错误在 TortoiseGit
【发布时间】:2013-09-05 17:02:29
【问题描述】:

我在启动 TortoiseGit 时遇到了这个错误:

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

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

【问题讨论】:

  • 我在将我的 Github 存储库从 Github flow 更改为 git-flow 时得到了这个。我添加了“开发”分支作为我的新默认分支,并删除了主分支。接受的答案解决了这个问题。

标签: git tortoisegit libgit2


【解决方案1】:

更新答案

所以事实证明,为了更新 本地 repo 的视图 <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 的引用日志中添加一条消息:

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”。

【讨论】:

  • +1 我不小心删除了 origin/HEAD (是的,愚蠢的!!!)感谢您的回答,我可以恢复它! :)
  • 谢谢。我不得不使用git remote set-head origin production,因为有Multiple remote HEAD branches。
猜你喜欢
  • 2019-10-26
  • 1970-01-01
  • 2017-12-07
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2023-02-14
  • 2021-03-29
  • 1970-01-01
相关资源
最近更新 更多