2012-04-15 3 views
12

나는 나의 'SECC'지점에서 REBASE를 시도하고있어GIT Rebase 현재 파일

[이 질문은 본질적으로 대답 없었 git crash during rebase 재개한다] :

$ git rebase main 
First, rewinding head to replay your work on top of it... 
fatal: Out of memory, malloc failed (tried to allocate 553656577 bytes)   # about 0.5 GB 
$ git rebase --abort 
No rebase in progress? 

이 오류는 분기와 해당 공통 조상 모두 0.5GB 인 .dat 파일이 3 개 있다는 사실과 관련이 있습니다.

어떻게 이런 상황에서 리베이스 할 수 있습니까?

추가 정보 :

  • A '자식 주요 병합은'잘 작동합니다.
  • '* .dat merge = keepTheirs'를 사용하여 .gitattribute를 확장해도 치명적인 오류는 방지되지 않습니다.
  • * .dat 파일이 다릅니다.
  • * .dat 파일을 제거하고 다른 파일을 리베이스하고 * .dat 파일을 다시 추가하려고합니다. 그러나 어떻게?
  • 나는 당신의 시스템이 '자식 REBASE'에 있지만 디렉토리가 munged 상태에있는 그 시점에서 실패 할 때까지 충분히 큰 경우는 알 수 없습니다 자식 1.7.9.4
+0

현재 브랜치에 대한 패치를 만들고 리베이스 할 위치에서 브랜치를 다시 만들고 패치를 적용 할 수 있습니까? – vcsjones

+0

비디오 파일 같은 것을 제어하는 ​​버전입니까? – KurzedMetal

+0

테스트 환경을 설정하는 데 사용되는 플래시 메모리 이미지입니다. 그러나 아무리해도, 그들은 근원 관리하에 있으며, 근원 관리하에 다른 모든 것들과 함께 재조정 될 필요가 있습니다. – GoZoner

답변

1

을 사용하고 있습니다. rebase하는 동안 다른 브랜치 (main)가 체크 아웃되어 'secc'변경 사항이 적용될 수 있습니다. 복구 및 진행 :

git checkout secc 

가 REBASE에 실패한 데 당신은 두 가지 옵션이있어 언급 한대로 : REBASE이 필요하지 않은 경우, 갈

  1. '자식 메인 병합을'
  2. 더 큰 기계를 얻고 당신의 0.5GB 파일을 무시 REBASE를 수행 한 후 다시 그 기가 파일을 얻을 수있는 실용적인 옵션이 없습니다

를 '자식 메인 리베이스'다시 시도하십시오.

1

의견에 따르면 더 많은 메모리 (이 경우 32GB)가 포함 된 컴퓨터에서 동일한 작업을 수행하면 문제가 해결되었다고 말한 것입니다. 이를 바탕으로 처음 시도한 컴퓨터에서이 작업을 수행 할 수있는 메모리가 부족하다는 결론에 도달했습니다. .git/info/attributes 이러한 퍼팅

+1

프로그램이 충돌하여 작업 디렉토리를 휴지통 상태 (복구 가능)로 남겨두면 '오, 더 큰 머신이 필요합니다'라고 말할 수 있습니다. - 그게 해결책이 아니군요 . – GoZoner

+0

문제는 a) 사용 가능한 메모리가 너무 적고 b) 부적절하게 처리하고있는 것 같습니다.) a) 우리가 할 수있는 일이 있습니다. b) 아마도 Git 개발자에게보고해야 할 내용입니다. – eis

+0

. .. 물론, 이것은 Git의 최신 버전에서 이미 수정 된 것이 아니라면, 정상적으로 작동하지 않을지라도, 이것을하기에는 여전히 메모리가 너무 적을 것입니다. – eis

0

시도 :

# whatever gets them... 
yourfile binary -delta merge=binary 
*.yourext binary -delta merge=binary 

해당 파일이 변경되면 병합 충돌을 일으킬 수 있습니다, 당신은 그들과 함께 무엇을 파악해야합니다. 다른 병합 전략에 대한 gitattributes 및 rebase 문서를 확인하십시오. 나는 여기 위험한 것들의 이름을 지정하지 않을 것입니다.

코어에서 실행되는 모든 것을 얻으려는 것이 실제로 병합되는 것은 확실하지 않지만 시도해 볼 가치가 있습니다.