2011-10-07 135 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 

将尝试可能使用,如果你有较少的内存不同的重订战略大的二进制文件。