2012-06-21 7 views
7

に失敗した私はエラーを取得する:Gitのプッシュ:致命的:リモートサーバーにプッシュすると、メモリのうち、malloc関数は

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 '[email protected]:development'" 

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

+0

参照[この](https://help.github.com/articles/remove-sensitive -データ);レポからデータをパージする方法とガベージコレクタを使用する方法について説明します。 – Shahbaz

+2

'git rm'でそれらを削除した場合、古いコミットに存在する可能性があります。あなたの履歴を書き換えて完全に削除することに異論はありますか?また、誤って押された、または誤ってコミットされたことを意味しますか? –

+0

私はプッシュされていないコミットを意味しました(元の質問を編集しました)。私は歴史を書き直すことに反対している。何かが動作します。 – Rune

答えて

3

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

警告:これは破壊的かつ不可逆的です。最初にリポジトリをバックアップしてください。

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

あなたのブランチの履歴から<file>を消去するコマンド:あなたは結果が気に入らない場合は、単にバックアップを復元することができます。ファイルごとに実行すると、問題が発生します。

3

次のコマンドを実行すると、私のために問題を修正しました:

git config --global pack.windowMemory 256m 

、あなたのハードウェアと帯域幅に応じて、最初の1グラムのようなものを、より大きなサイズをしようとする場合がありますので、これはデルタ圧縮の有効性に影響を与えます。ここ

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

0

ラズベリーパイの上にホストされているのgit-レポに押し込みながら、私はこのエラーを経験しました。私がプッシュしようとしたファイルの1つは、gitサーバー上の利用可能なメモリ(メモリ+スワップ)よりも大きいです。

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

mkswap /media/store/swapfile

swapon /media/store/swapfile

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

は、一時的にはgitのサーバー上に新しいスワップファイルを作成することで問題を解決します

swapon,cat /proc/swapsまたはfree

(スワップファイルが再起動後に消えてしまいますので、私は、/etc/fstabにスワップファイルを追加しないように選択する。)

関連する問題