当我启动TortoiseGit时,遇到了一个错误:
无法获取所有引用。
libgit2返回:Refspec 'refs/heads/origin/HEAD'未找到。
尽管这很烦人,但它并不妨碍我使用TortoiseGit。然而,我希望让它消失,因为它很烦人。我该怎么办?
无法获取所有引用。
libgit2返回:Refspec 'refs/heads/origin/HEAD'未找到。
尽管这很烦人,但它并不妨碍我使用TortoiseGit。然而,我希望让它消失,因为它很烦人。我该怎么办?
事实证明,为了更新本地仓库对于远程分支 <remote>/HEAD
指向的视图,你可以让 Git 自动从远程获取这些信息并在本地设置,而不是像我之前的解决方案那样手动使用 git symbolic-ref
来设置:
git remote set-head <remote> --auto
# Or shorter
git remote set-head <remote> -a
请注意,这个命令并不实际改变远程存储库本身的默认分支。如果需要更改远程存储库的默认分支,可能需要直接在远程存储库上使用git symbolic-ref命令(如果您有访问权限)。
错误信息提到的问题是,显然libgit2正在尝试读取由refs/remotes/origin/HEAD
指向的远程默认分支,但远程分支不存在,因此出现错误。
使用git branch -a
命令,我本地的repo认为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
问题已得到解决。另请参见:
git remote set-head origin production
。 - Răzvan Flavius Panda