34

Gitリポジトリのマスターブランチに最後にマージした後、リポジトリのクローンを作成する機能が失われました。

テストリポジトリへのクローン作成...
リモート:オブジェクトのカウント:126084、完了。
リモート:オブジェクトの圧縮:100%(28327/28327)、完了。
オブジェクトの受信:100%(126084/126084)、132.63 MiB | 29.30 MiB / s、完了。
リモート:合計126084(デルタ96101)、再利用126078(デルタ96095)
デルタの解決:100%(96101/96101)、完了。
エラー:refs / remotes / origin / masterが有効なオブジェクトを指していません!
エラー:ref refs / heads/masterをで書き込もうとしています
       存在しないオブジェクト951aca8051823b2f202d30c9cb05401ef17618c6

リポジトリホスティングツールであるFisheyeは、次のように報告しています。

リモートリポジトリからフェッチできません:
/var/atlassian/application-data/fisheye/managed-repos/MYREPONAME.git
エラー:0d998c99b6d01e8aabca72b1934802acf90b8fc9が見つかりません、
致命的:オブジェクト0d998c99b6d01e8aabca72b1934802acf90b8fc9が見つかりません

マスターブランチのリポジトリでの最後のコミットは次のとおりです。

コミット0d998c99b6d01e8aabca72b1934802acf90b8fc9
マージ:a6ea4b3 1f373a9
日付:2012年12月14日金曜日13:57:24 +0200

ブランチ'new_error_code'をマージします

私が試してみました:

cd /var/atlassian/application-data/fisheye/managed-repos/MYREPONAME.git
git gc
git fsck --full
git reflog expire --expire=0 --all
git update-ref
git gc --aggressive

次の質問は私の場合には役立ちませんでした:

4

4 に答える 4

44
git gc
git fsck --full
git reflog expire --expire=0 --all
git update-ref -d 0d998c99b6d01e8aabca72b1934802acf90b8fc9
git gc --aggressive
git remote update --prune

そしてそれはうまくいきました!

于 2013-01-14T09:47:01.667 に答える
1

通常、次のことができます。

git reflog master

これにより、マスターが指し示した最後の既知の位置のリストが表示されます。

これを知ったら、古いバージョンのマスターへの一時的なブランチを作成できます。

git branch temp master@{1}

次に、温度をチェックアウトし、適切な順序であるかどうかを確認します。そこに何も表示されない場合は、以前に実行したコマンド(reflogの削除、ぶら下がっているコミットの削除など)によって、回復までのすべての方法が消去されている可能性があります。

于 2012-12-14T17:23:52.753 に答える