11

据我所知,我的 git 本地存储库中的所有内容都很好。我可以提交、推动、拉动,无论我喜欢什么。

但是,当我在 IntelliJ 日志中查看提交的详细信息时,Contained in branches:

Can not load branches due to error:
error: branch 'origin/HEAD' does not point at a commit 
error: some refs could not be read 
error: branch 'origin/HEAD' does not point at a commit 
error: some refs could not be read

是什么原因造成的,我该如何解决?

4

1 回答 1

22

origin/head听起来它指的是远程原始存储库中设置的默认分支。例如,当我这样做时git branch -a,我会在列表中看到它:

remotes/origin/HEAD -> origin/master

如果在远程中更改了默认分支并删除了旧的默认分支,您可能在本地存储库中缺少此引用,或者本地存储库的引用可能已过时。

可能的解决方案

如果这确实是您的 IDE 错误的原因,那么您可以使用以下方法手动更正它git symbolic-ref

git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/<default-branch>

<default-branch>远程仓库中默认的分支在哪里。

更新的解决方案

所以 git 实际上有一个更方便的命令,可以用来将本地 repo 的 symbolic-ref 更新为远程 repo 中的默认分支:

git remote set-head <remote> --auto

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

它是在git 1.6.3(2009 年 5 月)的提交 bc14fac中引入的。

设置或删除命名远程的默认分支 ( $GIT_DIR/remotes/<name>/HEAD)。
不需要远程的默认分支,但允许指定远程的名称来代替特定的分支。
例如,如果将默认分支origin设置为master,则origin可以在您通常指定的任何位置指定origin/master

于 2013-09-02T14:16:22.717 回答