2011-10-07 13 views
7

私はリポジトリにかなりの量のファイルを持っています。したがって、リベースの変更中にメモリ不足例外が発生してgitがクラッシュすることがあります。rebase中にgitクラッシュが発生する

など。私はその例外を得た後、

git checkout feature 
git rebase master 
(nasty out of memory exception) 
..... 

だから、私は

git rebase master 

をリベースもう一度試してみましたそして、それはブランチfeatureが最新であることを教えてくれました。 rebaseが例外なく終了したので、それは奇妙に思えます。

oom例外を回避する方法はありますか?何とかgitのメモリ使用量を減らすことができます。この例外は、リポジトリの破損の原因になりますか?それが破損の原因ならば、安全にリベース中に行われた変更を、git rebase masterが呼ばれる前の状態にロールバックすることはありますか?

+0

例外は何を言いましたか?重要かもしれない。 – Chris

+0

私は今それを再現することはできません。しかし、それは次のようなものです: 'blablablaがメモリ不足、blablabla、mallocが失敗しました(100500バイトを割り当てられませんでした)' –

答えて

2

これはおそらくVM上で実行されているか、大きなファイルがいくつか格納されています。フィルタ分岐アウト大きなファイルをすることができますまたはメモリをつり上げる場合:私はより多くの情報を持っていない限り、私は追加することができ、他/

あまり..

+1

リポジトリの破損はどうですか? –

+0

「大きなファイル」とはどういう意味ですか? gitはリポジトリからすべてのファイルをramに保存して変更をリベースする必要がありますか? –

+0

わかりません。しかし、それはしようとしている可能性があります。あなたが史上最大のファイルをどれくらい持っていますか? –

0

git rebase $BASEによって開始されますgit reset --hard $BASE

それがメモリ不足のためにクラッシュした場合、それはあなたが残っていることを意味しますurブランチポインタは、先に指したコミットの代わりに$BASEを指しています。あなたがfeatureが最新であることを言われている理由

はそれだとき、あなたは既にメモリクラッシュのアウト後masterと同じコミットを指しているfeatureので、再びgit rebase master

、元のあなたが前にいたコミットへのブランチをリセット

git reset --hard [email protected]{1}`. 

それとも、クラッシュ後の枝に他の作業を行ってきた場合を実行し、元のコミットを見つけるためにgit reflogを実行します。

も参照してくださいUndoing a git rebase


あなたが戻ってコミット元にブランチを得た後、あなたが持っている場合は、おそらく少ないメモリを使用する別のリベース戦略をしようとします

git rebase -m master 

を試すことができます大きなバイナリファイル。

関連する問題