web-dev-qa-db-ja.com

GITプルエラー-リモートオブジェクトが破損しています

$ git pull

remote: fatal: object 21f3981dd35fccd28febabd96f27241eea856c50 is corrupted
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header

これが失敗する理由はありますか?
実行時git --bare fsck-objects --fullぶら下がりリンクだけが表示されますが、壊れたリンクは表示されません。また、git gcは何の助けにもなりませんでした。再クローンしたり、別のクローンからプルしたりしても、このエラーは表示されません。

46
Senthil A Kumar

ジュリアンが言ったように https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header

これは本当にメモリの問題になる可能性があります。ここで解決策を失わないようにするには、次のようにします。

git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m" 
git config --global pack.threads "1"
28
cazcade_neil

git config --global pack.window "0"を追加するとうまくいきました...

git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m" 
git config --global pack.threads "1"

理由:

Gitクローンは、リポジトリのクローンを作成中にデータを圧縮します

データ/ファイルを受信する前に、サーバーメモリ上のデータを圧縮します。

サーバーのメモリが不足している場合、オブジェクトのパック中に上記のエラーが発生します

次のコマンドを使用して、サーバー上のオブジェクトをパックせずに、Gitにリポジトリのクローンを作成させることにより、問題を修正できます。

git config --global pack.window "0"

15
logan

答えはコメントにあるようです:git fsck

12
robrich

このエラーが発生し、投稿に記載されているすべてのことをfsck、repack、gc、メモリオプションの構成に半日費やしました。

この投稿にも続きました: http://git.kernel.org/cgit/git/git.git/tree/Documentation/howto/recover-corrupted-blob-object.txt?id=HEAD

しかし、最終的には、むき出しのリポジトリで破損したオブジェクト(この場合は21f3981dd35fccd28febabd96f27241eea856c50)を見つけ、それを破損していないバージョン(ローカルリポジトリのいずれかの.gitフォルダにあります) /裸のリポジトリからクローンされました。)

5
Shiva

クライアントでは、次のようにしてください:

git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m" 
git config --global pack.threads "1"
git config --global pack.window "0"

またはgitサーバーで、これを試してください:modify:/home/git/repositories/***.git/config、以下を追加:

[pack]
         window = 0 
2
litian.zhuang

これは私のために問題を解決し、他の人に役立つことを願っています。 :) https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header

1
Julian

私にとってこれは、gitリポジトリをホストしている私のリモートサーバーに破損したオブジェクト/ファイルがあったためです。再パックしようとすると、メモリが不足していました。インスタンスのメモリをアップグレードしてからsshを実行して実行しました

git gc

ドキュメントへのリンクは次のとおりです。

https://git-scm.com/book/uz/v2/Git-Internals-Packfiles

0
zeros-and-ones