2011-10-07 2 views
7

저장소에 파일이 많습니다. 따라서 rebase 변경 중에 메모리 부족 예외로 인해 git이 충돌하는 경우가 있습니다.리베이스 중에 git 크래시가 발생했습니다.

예. 내가 그 예외가 도착 했더

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

그래서,

git rebase master 

을 리베이스 다시 시도하고 해당 분기 feature를 최신 상태로 나에게 말했다. rebase가 예외적으로 완료되면 이상하게 보입니다.

oom 예외를 피할 수있는 방법이 있습니까? 여하튼 git이 메모리를 더 적게 사용한다고 말할 수 있습니다. 이 예외가 저장소 손상의 원인 일 수 있습니까? 손상이 발생하면 rebase 중에 변경된 내용을 git rebase master이라는 상태로 안전하게 되돌릴 수있는 방법이 있습니까?

+0

예외는 무엇입니까? 중요 할 수도 있습니다. – Chris

+0

지금 재현 할 수 없습니다. 그러나 그것은 다음과 같다 :'blablabla 메모리 부족, blablabla, malloc 실패 (100500 바이트를 할당 할 수 없음)' –

답변

2

아마도이 파일은 VM에서 실행 중이거나 큰 파일을 저장하고 있습니다. 필터 지점 밖으로 큰 파일 당신은 메모리 최대 충돌하거나 경우에 : 나는 더 많은 정보를 가지고하지 않는 한 내가 추가 할 수있는 다른 많은 없음/

을 ..

+1

저장소 손상은 어떻게됩니까? –

+0

'대형 파일'이란 무엇입니까? git은 저장소에있는 모든 파일을 ram에 저장하여 변경 사항을 rebase해야합니까? –

+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


참조 아마 당신이있는 경우에 더 적은 메모리를 사용하는 다른 REBASE 전략을 시도 할 것이다

git rebase -m master 

큰 바이너리 파일.