以下で何を意味するかをより明確にするために、最初にいくつかの背景を説明します。コマンドは2つfetchの部分で機能します。何か、通常は内部プログラム)。リモートで実行されるアップロード パック ステップは、「私はオブジェクトを持っています」(通常はコミットまたは注釈付きタグ) という形式の一連のオファーを作成します。git fetchhttp://git://ssh://git upload-pack
の代わりに実行することで、リモートが提供するものを確認できます。これは引き続き実行されますが、提供されているものを取得する代わりに、オファーを表示 (リスト) するだけです。git ls-remotegit fetchupload-pack
ここのオファーリストに表示されているものは何でも入手できます. ここに表示されない場合は、取得できません。少なくとも、経由では取得できませんgit fetch。を含む他のいくつかの方法ではgit archive、未加工の SHA-1 を知っていれば、コミットにアクセスできる場合があります。
取得可能にする
あなたの説明を考えると、リモートのreflogsがオンになっているようです(通常の非裸のリポジトリです)。コミットはE以前はいくつかのブランチ (および at HEAD) にありましたが、リセットされて、 およびブランチの 2 つの reflog からのみアクセスできるようにHEADなりました。
通常、 1 つ upload-packのオファーHEADと 内のすべての参照refs。リログは入っていないrefsのでupload-pack提供していません。これは、コミットを指している現在の参照がない場合、Eそれは提供されないことを意味します。提供されるようにするには、リモートにログインし、 commit を指す ref を作成しますE。
1これはある程度設定可能です。git-namespacesおよび の 3 つのhideRefs構成項目を参照してくださいgit-config。