2010-11-18 9 views
8

로컬 컴퓨터의 git 저장소에 큰 문제가 있습니다.손상된 git 트리가 있습니까?

파일을 수정하고 git status을 실행하면 파일이 수정 된 것으로 나타납니다. git add .을 사용하여 파일을 추가했으며 평소와 같이 작동했습니다. 내가 변경 내용을 커밋하고 있었다 때, 나는 다음과 같은 오류 있어요 : git cat-file -t e91ce852822d32e380ed7ddd04c93066e3c600ea를 실행하여

error: garbage at end of loose object 'e91ce852822d32e380ed7ddd04c93066e3c600ea' 
fatal: object e91ce852822d32e380ed7ddd04c93066e3c600ea is corrupted 

을, 나는 개체가 나무 인 것을 알 수있다.

손상된 BLOB 또는 커밋을 복구하는 방법에 대한 몇 가지 해결책을 보았습니다. 그러나 이것은 트리이며, 무엇이 잘못되었거나 해결할 수있는 방법에 대한 답을 찾을 수 없습니다.

는 어떤 도움을 말할 하드 잘못되어 갈 수 무엇

+2

'git fsck'를 실행 했습니까? –

+0

예, 같은 오류입니다. 그러나 그것은 또 다른 대상입니다. 또한 나무이기도합니다. –

+0

@MarkRushakoff : 그냥 Olof와 같은 오류가 발생했고,'git fsck'는 같은 오류 메시지를 출력합니다. –

답변

2

:) 감사하고 힘내 버전과 환경에 따라 달라집니다.
예를 들어, legacyheaders = false 설정으로 인해 이런 종류의 메시지를 발생시키는 예전에는 zlib issue with git1.5.1이있었습니다.

loose objects에서 나무를 복원,이 그래서 " How to recover Git objects damaged by hard disk failure?는"그 후, ( Mark Rushakoff이 주석에 언급 같은) git fsck --full 수행 된 그것을 할 수있는 방법을 보여 대답합니다.
git cat-file -t 6c8cae4994b5ec7891ccb1527d30634997a978ee 

and check the type of the object.

If the type is tree: you could use 'git ls-tree' to recover the tree from previous backups; then ' git mktree ' to write it again in your current repository.

하지만 그 나이 팩 또는 저장소에 백업에 하나 이러한 개체를 찾는 가정합니다.

+0

그 질문에 대해서도 우연히 발견되었지만 .git/objects/pack /은 비어 있습니다. 구형 팩을 통한 검색은 어떻게 수행합니까? –

+0

@ 정보 : 오래된 팩? 나는 이것이 마지막 문장 인 "하지만 그것은 구형 팩이나 저장소 백업에서 이러한 객체를 찾는다고 가정합니다"라고 생각합니다. 백업이 있습니까? – VonC

+0

백업이 있는데 불행히도 한 달 정도 지났습니다. 구형 팩에서 어떻게 찾을 수 있습니까? 나는 오래된 커밋을 체크 아웃 할 수 없으며, 작동하는 것으로 보이는 유일한 것은 git log이다. –

-2

안녕하세요. 제게는 git 디렉토리를 삭제하고 git를 다시 시작하십시오. 모든 솔루션은 작동하지 않은 경우 자식의 repo가 ​​외부 ressource (Github에서)와 와 동기화하는 경우

+0

'.git' 디렉토리를 삭제 하시겠습니까? 그럼 .. '자식 초기화'가 아닌가? –

3

, 당신은 당신의 repo-init를 다시 할 수

내가 무슨 짓을했는지 :

# copy the corrupted .git dir 
mv -f .git .gitback 
git init 
# keep your config file 
cp .gitback/config .git/config 
# load objects 
git pull 

효과가있었습니다. 분명히 좋은 해결책은 아니지만 도움이 될 것입니다.

+0

가끔이 모든 작업을 수행 할 수 있습니다. 그래도 훌륭한 솔루션은 아니며 실제로 솔로 프로젝트에서만 허용됩니다. :) –

관련 문제