7

私のパックファイルに関する複数のエラーが発生しましたが、これは非常に陰湿なようです。これは実際のサイトであり、処理方法がわからないため、非常に恐ろしい取引です。誰かが私に話してくれるかもしれません。

不足しているオブジェクトがあるようですが、パックファイルの数も間違っていますか?

remote: Counting objects: 25733, done.
remote: Compressing objects: 100% (12458/12458), done.
remote: Total 19185 (delta 6914), reused 17995 (delta 6535)

Receiving objects: 100% (19185/19185), 1.69 GiB | 465 KiB/s, done.
Resolving deltas: 100% (6914/6914), completed with 1058 local objects.

error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack claims to have 19185 objects while index indicates 20243 objects
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack cannot be accessed
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack claims to have 19185 objects while index indicates 20243 objects
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack cannot be accessed
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack claims to have 19185 objects while index indicates 20243 objects
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack cannot be accessed

error: unable to find e17196d88ae91dea07b4d61716b91dac581fb131

error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack claims to have 19185 objects while index indicates 20243 objects
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack cannot be accessed

fatal: object e17196d88ae91dea07b4d61716b91dac581fb131 not found

編集 別のものが芽生えたようですので、今は....

.git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack 
.git/objects/pack/pack-931e28ca404e28040a10085dd1534ef12cf18c6d.pack

これらの両方をwww-rootを超えてコピーして削除しようとしましたが、現在実行中であり、git-gcオリジンを再取得しようとしていますgit fetch origin

git-gc今戻ります

bad sha1 file: .git/objects/05/.a2e1939ce5a53d5ec7c3cacc4df97acd09c6af.hdgIVe
bad sha1 file: .git/objects/80/.1a75684e9d869e9ed7c1ded674c55caa17c524.YUr1Yu
bad sha1 file: .git/objects/8c/.7e8381b3e0d0a1f1d4fa328f0dda0a1dbd814a.L0255H
bad sha1 file: .git/objects/c5/.32926ac2d67785cb8580b885ac3d3fd7075f57.rDsW4H
Removing stale temporary file .git/objects/pack/tmp_pack_jnP5qn
4

2 に答える 2

3

「壊れた git リポジトリの問題」とそれに関連する議論で述べたように:

これらのオブジェクトの多くは、領域を節約するために packfile にまとめられます。コンテンツを変更してこれらのパックファイルを破損しました。さらに悪いことに、コンテンツの長さを変更しました。
git fsckは実際には git リポジトリについて何も修正しません。エラーをチェックして報告するだけです。
git unpack-objects一方、破損したパックファイルから可能な限りアンパックすることはできますが、git fsck --full報告されるように、レポにはまだエラーがあります.
壊れたリポジトリを修正する方法は?」または「リポジトリからすべての壊れた参照を削除する方法は?」を参照してください。


Git 2.4.3 (2015 年 6 月) では警告が表示されなくなりpackfile .git/objects/pack/pack-xxx.pack cannot be accessedました。
これにより、実際のエラーのみに集中できます。

コミット 319b678 [2015 年 3 月 31 日] by Jeff King ( peff)を参照してください。
( 2015 年 6 月 5 日、コミット 3c91e99Junio C Hamanoによってマージされました)gitster

Peff の場合と同様に、説明は啓発的です。

sha1_filepackfile cannot be accessed: " " 警告をスケルチ

パックファイル インデックス内にオブジェクトが見つかった場合、同時再パックによって削除された可能性があるため、パックファイル自体をまだ開くことができる (または既に開いている) ことを確認します。
パックファイルにアクセスできない場合は、ユーザーに警告を出力し、呼び出し元にオブジェクトがないことを伝えます (あきらめる前に、他のパックファイルを調べるか、緩いバージョンを見つけることができます)。

ユーザーに出力する警告は実際には何も達成しておらず、ユーザーを混乱させる可能性があります

通常、これは完全なノイズです。オブジェクトは別の場所で見つかります。ユーザーは、パックファイルのインデックスが古くなっているのを見たことを気にする必要はありません。動作には全く影響ありませんでした。

おそらくもっと興味深いケースは、後でオブジェクトを見つけることができず、ユーザーに失敗を報告する場合です。この場合、警告は最終的な失敗の手がかりと見なすことができます。しかし、それは実際には有用な手がかりではありません。一貫して出力することさえできません (別のプロセスと競合しているため、.idxファイルを表示することさえできないか、競合に勝ってパックファイルを開いて操作を完了する可能性があります)。

このパッチは警告を完全に削除します (fill_pack_entryサイトからだけでなく、同じ使用からもpack-objects)。エラーの場合に興味深い警告が見つかった場合は、それを詰め込んで、後で壊れたオブジェクトのために
ユーザーに公開することができます。die()しかし、その複雑さはそれだけの価値がありません。


また、Git 2.22.1 (2019 年第 3 四半期) では、" git update-server-info" が古いパックファイルを出力に残していましたが、修正されました。

Eric Wong ( )によるコミット e941c48 (2019 年 5 月 23 日)を参照してください。 支援者: Jeff King ( ) . ( 2019 年 7 月 25 日コミット 776d668Junio C Hamanoによってマージされました)ele828
peff
gitster

server-info: リンクされていないパックをリストしない

存在しないパックがあるobjects/info/packsと、ダム HTTP クライアントが異常終了します。

v2ALLOC_GROW: Jeff Kingの提案に従って、単一ループを使用します


Git 2.35 (2022 年第 1 四半期) では、隔離機能のコア内での使用を支援する tmp-objdir API への新しいインターフェイスがあります。

コミット ecd81dfコミット b3cecf4 (2021 年 12 月 6 日) by Neeraj Singh ( neerajsi-msft)を参照してください。
( 2022 年 1 月3 日にコミット 0dc90d9Junio C Hamanoによってマージされました)gitster

tmp-objdir: 書き込み可能な一時データベースを作成するための新しい API

パッチベース: Elijah Newren
署名者: Neeraj Singh
レビュー者: Elijah Newren

APIはtmp_objdir一時的なオブジェクト ディレクトリを作成する機能を提供しますが、サブプロセスがこれらのオブジェクト ストアにアクセスし、続いてメイン プロセスがそこからオブジェクトをメイン オブジェクト ストアに移行するか、単に削除することを目的として設計されました。
サブプロセスはそれをプライマリ データストアと見なし、書き込みます。

ここでtmp_objdir_replace_primary_odbは、現在のプロセスの書き込み可能な「メイン」オブジェクト ディレクトリを指定されたディレクトリに置き換える関数を追加します。以前のメイン オブジェクト ディレクトリは、 または のいずれか
に復元されます。tmp_objdir_migratetmp_objdir_destroy

--remerge-diffユースケースでは、 object_database`` に新しいwill_destroyフラグを追加して、 fsync のstruct 耐久性を必要としない一時的なオブジェクト データベースをマークします。

git prune一時オブジェクト データベースを削除するための ' ' ( man )サポートを追加し、それらの名前tmp_が操作固有の名前で始まり、含まれていることを確認します。

プルーン メッセージは次の場所から送信されます。

Removing stale temporary file ...

に:

Removing stale temporary directory ...
于 2015-06-08T21:26:55.387 に答える
1

他のリポジトリに破損があるようです。中央リポジトリの場合は、リポジトリから再クローンしてから、全員にブランチをプッシュしてもらいます。その後、プルは機能するはずです-レポを修正しているというメッセージを全員に送信できない場合を除きます..

于 2012-07-09T19:17:56.520 に答える