8

リモートサーバーにプッシュすると、次のエラーが表示されます。

Counting objects: 58, done.
Compressing objects: 100% (35/35), done.
fatal: Out of memory, malloc failed (tried to allocate 595059947 bytes)
error: pack-objects died of signal 13
error: failed to push some refs to 'git@cassandra.predictioninstitute.com:development'"

問題は、非常に大きなログ ファイルを誤ってコミットしたことだと思います。その後、それらを削除しましたが (git rm logfile)、エラーは残ります。そして、それらは「git status」に表示されません。これから回復するにはどうすればよいですか?

4

3 に答える 3

4

あなたが歴史を書き換えることに反対していたのか、それとも反対していなかったのか、あなたのコメントからはわかりませんでした。反対しない場合、このコマンドは大きなファイルを履歴から消去します。

警告: これは破壊的で元に戻せません。最初にリポジトリをバックアップします。結果が気に入らない場合は、単純にバックアップを復元できます。

git filter-branch --index-filter 'git rm --cached --ignore-unmatch <file>' \
--prune-empty --tag-name-filter cat -- --all

<file>そのコマンドは、ブランチの履歴から消去されます。問題の原因となっているファイルごとに実行します。

于 2012-07-09T12:56:47.080 に答える
3

次のコマンドで問題が解決しました。

git config --global pack.windowMemory 256m

これはデルタ圧縮の有効性に影響するため、ハードウェアと帯域幅に応じて、1g などの大きなサイズを最初に試してみることをお勧めします。

詳細はこちら: https://www.kernel.org/pub/software/scm/git/docs/git-pack-objects.html

于 2013-08-23T12:18:48.760 に答える
1

ラズベリー pi でホストされている git-repo にプッシュしているときに、このエラーが発生しました。プッシュしようとしたファイルの 1 つが、git サーバーで使用可能なメモリ (メモリ + スワップ) よりも大きくなっています。

Git サーバーに新しいスワップファイルを一時的に作成することで問題を解決しました。

dd if=/dev/zero of=/media/store/swapfile bs=1024 count=655360

mkswap /media/store/swapfile

swapon /media/store/swapfile

次のコマンドを実行して、新しいスワップ パーティションが追加されたことを確認します。

swaponcat /proc/swapsまたはfree

(スワップファイルを に追加しないことにした/etc/fstabので、スワップファイルは再起動後に削除されます。)

于 2016-10-26T10:42:07.800 に答える