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 には、ローカル リポジトリのシンボリック参照をリモート リポジトリのデフォルト ブランチに更新するために使用できる、より便利なコマンドがあります。

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が に設定されている場合masterorigin通常は を指定する場所に を指定できますorigin/master

于 2013-09-02T14:16:22.717 に答える