我在存储库中有相当多的文件。因此,在变基改变期间,由于内存不足异常,git有时会崩溃。
E.g。
git checkout feature
git rebase master
(nasty out of memory exception)
.....
所以一旦我得到了那个例外,我再次尝试重新定位
git rebase master
它告诉我,分支feature
是最新的。这看起来很奇怪,因为rebase以异常结束。
有没有办法避免异常?可能会以某种方式告诉git使用较少的内存量。此异常可能是存储库损坏的原因吗?如果它导致损坏,有没有办法安全地将在rebase期间所做的更改回滚到状态git rebase master
之前的状态?
答案 0 :(得分:8)
尝试:
git repack -a -f -d
答案 1 :(得分:2)
您可能正在VM上运行它或正在存储一些大文件。如果可以,可以过滤分支大文件或增加内存:/
除非我有更多信息,否则我无法添加其他内容..
答案 2 :(得分:0)
git rebase $BASE
从git reset --hard $BASE
如果由于内存不足而导致崩溃,则意味着您的分支指针指向$BASE
,而不是之前指向的提交。
这就是为什么当你再次feature
时,git rebase master
被告知feature
是最新的,因为master
已经指向与git reset --hard HEAD@{1}`.
之后相同的提交内存崩溃。
要将分支重置为之前的原始提交,请运行
git reflog
或者,如果您在崩溃后在分支上完成了其他工作,请运行git rebase -m master
以查找原始提交。
将分支恢复到原始提交后,您可以尝试
{{1}}
如果您有大型二进制文件,它将尝试使用不同的rebase策略,这可能会占用更少的内存。