110

これは、さまざまな原因でよくあるエラーのようです。

「kiflea.git」という名前の単純な裸の git リポジトリがあり、次のように複製します。

git clone git://kipdola.be/kiflea.git

次に、gitは私に教えてくれます:warning: remote HEAD refers to nonexistent ref, unable to checkout.

はい、.git ディレクトリを除いて、マップにはバージョン管理されたファイルはありません。とにかく、私がする必要がある唯一のことは次のとおりです。

cd kiflea
git checkout master

そしてそれは機能します、すべてのファイルがそこにあります。しかし、レポを複製するとマスターが自動的にチェックアウトされると思ったので、正確には何が起こっているのでしょうか?どうすれば修正できますか?

git checkout masterちょっとしたことをした後、これがローカルの .git 構成ファイルに追加されることに気付きました。

[branch "master"]
    remote = origin
    merge = refs/heads/master

この git リポジトリが遠い過去に svn リポジトリであったことを知ることは、おそらく興味深いことです。

Ps: gitweb を使用してベア リポジトリを参照すると、そこに明らかにmasterブランチがあります: http://kipdola.be/gitweb/?p=kiflea.git;a=summary

4

13 に答える 13

165

これwarning: remote HEAD refers to nonexistent ref, unable to checkout.は、リモート (ベア) リポジトリに、同じリポジトリ内の公開されたブランチと一致しない値で呼び出されたファイル内のブランチ参照が含まれていることを意味します。HEAD

警告は、git がチェックアウトを実行しなかったことのみを意味することに注意してください。それ以外の場合、クローンされたリポジトリは問題ありません。git branch -a可能性のあるブランチを確認git checkout the-branch-you-wantし、問題を回避するために実行してください。

これは通常、そのファイル (またはベア リポジトリの場合はプレーン) のデフォルトの内容が、誰かがこのリポジトリにアクセスする場合、デフォルトでブランチのクローンを作成する必要があることを示しているために発生します。デフォルトでは、Git はプレフィックスなしでローカル ブランチを作成します (つまり、デフォルト)。詳細については、お試しください。.git/HEADHEADref: refs/heads/masterclonerefs/heads/masterrefs/heads/mastergit help symbolic-ref

この状況の問題は、Git がリモートシンボリック参照を変更する方法を提供しないため、Git ホスティング プロバイダーが実装したもの (たとえば、管理者権限がある場合は GitHub の設定 - デフォルト ブランチ) を使用するか、ブランチ名を使用する必要があることです。masterデフォルトのブランチとして (それがファイルのデフォルトのコンテンツであり、そのファイルHEADを変更できない場合はmaster永遠に立ち往生するため)。

リモート git リポジトリにシェル アクセスできる場合は、デフォルトで使用するブランチ名がcd path/to/git/repo; git symbolic-ref HEAD refs/heads/XYZどこにあるかを簡単に確認できます。XYZ

この問題を解決する 1 つの方法は、コミットなしで新しいリモート ベア リポジトリを作成してから実行することですgit push name-of-the-remote my-special-branch-name。これにより、単一のブランチを含むベア リポジトリが作成されますmy-special-branch-nameが、HEADシンボリック ref には を指すデフォルト値が含まれていますmaster。その結果、前述の警告が表示されます。HEADリモートファイルを変更できない場合は、構文を使用してブランチを公開できます。これは、呼び出されたローカル ブランチをリモートのブランチとして公開する必要があることgit push name-of-the-remote my-special-branch-name:masterを意味します。my-special-branch-namemaster

于 2013-03-26T07:33:33.997 に答える
14

ブランチを使用しなくなったため、同じ問題が発生masterし、ローカルとリモートの両方のリポジトリで失われました。

リモート リポジトリはまだ にHEAD設定されていmasterましたが、実際に使用しているリモート ブランチの 1 つに変更したところ、すべて正常に動作しました。

リモート リポジトリにアクセスできる場合:

  • あなたに行くremote_repo.git;
  • HEADファイルを編集
  • ref: refs/heads/masterに変更ref: refs/heads/your_branch
于 2014-02-19T10:26:51.200 に答える
10

はい、これはマスターとは異なるブランチをチェックアウトしようとしているgitクローンに関連しています。これをするだけ

git clone user@git-server:project_name.git -b branch_name /some/folder

これは、ブランチ名を使用して正確なブランチを複製するのに役立ちます。

于 2014-07-15T16:18:20.320 に答える
3

このエラーが表示されたにもかかわらず、プロジェクトは対応するリポジトリにまだ接続されていました。git branchコマンドを実行して適切なブランチを確認し、実行git checkout *branchnameして BOOM を実行しました。すべて問題ありませんでした。

于 2014-07-29T19:29:45.643 に答える
2

この質問は 10 年前のものです。これが私が今それを解決した方法です:

次のようなログが表示されるよりも、clone コマンドを使用してリポジトリのクローンを作成しているとします。

git クローンhttps://abcgit-repo.abccoolrepo

'abcgit404.sasasasmy cool repo' への複製... リモート: オブジェクトのカウント: 198、リモートで実行: ソースの検索: 100% (26/26) オブジェクトの受信: 80% (176/219) 208 (デルタ 0) オブジェクトの受信オブジェクトの受信: 100% (219/219)、49.09 KiB | 163.00 KiB/秒、完了。警告: リモート HEAD が存在しない参照を参照しているため、チェックアウトできません。

リモート HEADを解決するために、存在しない参照を参照しているため、

最初にブランチをチェックアウトすると、次のようなログが表示されます。

  1. git checkout リモート/オリジン/メインライン

HEAD は現在 xyz にあります

  1. 現在のブランチの前に * があるすべてのブランチを表示します

git ブランチ -a

*(オリジン/メインラインで切り離されたヘッド)
remotes/origin/a
remotes/origin/b
remotes/origin/c
remotes/origin/d
remotes/origin/mainline

  1. 上記からブランチ名をコピーし、git checkout checkout -bを実行します

例: メインラインのチェックアウト:

git checkout -b リモート/オリジン/メインライン

*オリジン/メインライン リモート/オリジン/a
リモート/オリジン/b
リモート/オリジン/c
リモート/オリジン/d
リモート/オリジン/メインライン

これで問題は解決します

于 2021-02-10T18:25:33.350 に答える
1

リモートリポジトリに間違いなく問題があります。リポジトリの新しいクローンを作成することで修正できる場合があります。また、新しいコミットをマスター ブランチにプッシュすることも機能する可能性があります。

于 2012-08-10T03:06:02.137 に答える
1

*どういうわけかリモートサーバーをだましているのは、コミットログの先頭にあると思います。

404 - Unknown commit object一部のメニュー リンクを使用してリポジトリの Web インターフェイスを参照できますが、特に概要ページから、または同様のエラーで失敗するものもあります。

その最後のコミット メッセージを修正できるかどうかを確認し、更新を強制的にプッシュして、それが修正されるかどうかを確認します。サーバーデーモンにバグがある可能性があります。修正された場合は、git リスト git@vger.kernel.org (プレーン テキスト メッセージのみ) で報告する価値があります。

于 2012-08-10T21:24:17.207 に答える