2011-10-07 77 views
7

我在存儲庫中有相當大量的文件。因此,git有時會因重建更改而導致內存不足異常而崩潰。git在rebase期間崩潰

E.g.

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

所以一旦我得到的例外,我再次嘗試基礎重建

git rebase master 

它告訴我,分支feature是最新的。這看起來很奇怪,因爲亞馬遜以異常結束。

有沒有辦法避免oom異常?可能會以某種方式告訴git使用更少的內存量。這個異常是否會導致存儲庫損壞?如果它導致腐敗有沒有辦法安全地回滾在rebase期間發生的變化,以說明在git rebase master被調用之前?

+0

例外說了什麼?可能很重要。 – Chris

+0

我現在無法複製它。但它如下所示:'blablabla內存不足,blablabla,malloc失敗(無法分配100500字節)' –

回答

2

您可能正在虛擬機上運行此操作或正在存儲一些大文件。篩選出來的分支大型文件,如果你能或者碰到了內存:/

別的不多,我可以添加,除非我有更多的信息.​​.

+1

存儲庫損壞怎麼辦? –

+0

你是說「大文件」是什麼意思? git是否需要在ram中存儲來自存儲庫的所有文件以重新設置更改? –

+0

不確定。但它可能會嘗試。你有史以來最大的檔案有多大? –

0

git rebase $BASE開始做git reset --hard $BASE

如果它因爲內存不足而崩潰,這意味着你只剩下喲你的分支指針指向$BASE而不是它之前指向的提交。

這就是爲什麼你會被告知,feature是最新的,當你再次git rebase master,因爲feature已經指向同一個commit爲master內存不足崩潰之後。

要重置分支回原來的承諾你之前,運行

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

或者,如果你已經死機,運行git reflog之後完成的分支其他工作找到原來的承諾。

Undoing a git rebase


看看你得到後您的分支回原來的承諾,你可以嘗試

git rebase -m master 

將嘗試可能使用,如果你有較少的內存不同的重訂戰略大的二進制文件。