回答:
私はこれの影響を理解していませんが、このスレッドで提案されているように、これに遭遇したとき私はちょうどしました
$ mv .git/refs/remotes/origin/HEAD /tmp
(念のために保管しておいてください)
$ git gc
文句なしに働いた; 私は何の問題にも遭遇していません。
git prune
私のために働いた、Gitに蓄積されたが有用なものによって参照されていないデータを削除する方法。
$ mv .git/refs/remotes/origin/HEAD /tmp
$ git gc
git prune
git gc
、私にとってはうまくいきました
私が遭遇した問題(これは、@ Stavarengoが上記のコメントで言及したのと同じ問題です)は、デフォルトのリモートブランチ(develop
私の場合)が削除されていましたが、それでもで参照されていました.git/refs/remotes/origin/HEAD
。
.git/refs/remotes/origin/HEAD
私のエディターで開くとこれが示されました:
ref: refs/remotes/origin/develop
私は新しいデフォルトのブランチを指すように注意深く編集しましたが、すべて順調でした。
ref: refs/remotes/origin/master
私に気付いた手がかりは、実行中にgit prune
このエラーが表示されたことです:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
トレントンの答えを見た後、私は自分.git/refs/remotes/origin/HEAD
を見て、それが現在削除されている古いブランチも指していることを確認しました。
しかし、自分でファイルを編集する代わりに、ライアンの解決策を試しました。
git remote set-head origin --auto
ファイルは自動的に新しいブランチに設定され、git gc
その後は問題なく動作しました。
git remote set-head $REMOTE --auto
私の場合、複数のリモートが設定されているため、$ REMOTEはリモートエイリアスであり、デフォルトの "origin"ではありません。
これは機能しているように見えたため、解決策は次のとおりだと思いましたが、実際には問題を解決しないことがわかりました。
git remote set-head origin --auto
git prune
(最初のコマンド出力で推奨されていたように)も使用したため、最初、2番目、または両方で何が役に立ったかを正確に知ることができません。
git remote set-head origin --auto
使用せずにrefs / remotes / origin / HEADファイルを修正git prune
error: Multiple remote HEAD branches. Please choose one explicitly
するためにgit remote set-head origin mybranch
( 'mybranch'ブランチがチェックアウトされている間に)使用する必要がありました。
シンボリック参照が壊れている可能性があります...次のようにデフォルトのブランチに置き換えてみてください:たとえば、デフォルトのブランチはマスターです
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
それで解決するはずです。
master
と呼ばれる別のブランチに変更したため、この問題に陥ったと思いますdevelop
。私は後ろからそれを変更する前の日develop
へmaster
と私は古いデフォルトのブランチを削除したdevelop
が、私の作業ディレクトリに、ファイルが.git/refs/remotes/origin/HEAD
まだ指していなかったrefs/remotes/origin/develop
もう存在しています。この状況では、ファイルの削除は機能しました。