2011-10-04 12 views
6

손상된 git 객체가 있습니다. git 객체 디렉토리에서 파일의 크기는 0입니다.git에서 손상된 느슨한 파일을 복구하는 방법

먼저 fsck를 : 다음

git fsck --full 
fatal: loose object a35c1489005cca1ffeb3c2d3e4d63988408b6a24 (stored in .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24) is corrupted 

LS :

ls -l .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24 
----------+ 1 sampath ???????? 0 Sep 13 15:26 .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24 

해당 파일이 디스크에 존재하지 않는다!?

# git cat-file -t a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
error: unable to find a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
fatal: git cat-file a35c1489005cca1ffeb3c2d3e4d63988408b6a24: bad file 

당기고 자 할 때이 오류가 가장 먼저 나타납니다.
파일을 제거하고 풀을 시도했지만 작동하지 않았습니다. 파일이 누락되었다고 불평했다. 내가 파일을 제거하고 fsck를 실행

, 그것은 매달려 많은

# git fsck --full 
broken link from commit 1e5980c224ff19b19ad99dbefed4c7c64c58aee6 
       to tree a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
dangling tree 0401d636a512b208dffd6ac6e153ab0a061f8d5d 
dangling blob 58014c0266784a1e3cc1502de82837c5f36c8514 
dangling tree 0507fa56260c693cea678eab0343240c5bba06ad 
dangling tree 130770880c664a0b0cf5a21d037cbdba7480dc90 

난 다시 몇 커밋가는 피곤 객체 그것은 도움이되지 않았다 저를 보여 주었다.
어떻게 복구 할 수 있습니까?

+1

어딘가에 복사본이 있습니까? 그렇게한다면, 거기에서 물건을 걸러 낼 수 있습니다. 당신이 어딘가에서 그것을 당기고 있었기 때문에, 당신은 그 repo에 그 객체를 가지고 있기를 바랍니다. – Andy

+0

http://stackoverflow.com/questions/801577/how-to-recover-git-objects-damaged-by-hard-disk-failure help ? (물론 그 repo의 백업을 가지고 있다면) – VonC

+0

나는 이것을 시도했다. 저장소를 복제하고 개체의 압축을 풉니 다. 하지만 0 크기를 가진 느슨한 개체 파일을 찾을 수 없습니다. 이것은 원격지에 아직 푸시되지 않은 로컬 커밋 중 하나에 속한다는 것을 의미합니까? –

답변

1

나무가 손상된 것처럼 보입니다. 당신이 그 커밋들 주위에 당신의 구조를 안다면, 그것이 무엇인지 짐작할 수 있습니다. 바라건대 어떤 파일이 추가되거나 제거되었는지 추측 할 수 있기를 바랍니다. 당신의 얼룩과 다른 나무도 매달려있을 것입니다. 당신이 정말로 이것을 복구하고 repo의 다른 클론을 갖고 싶지 않다면, 여전히 가능하지만 약간의 시간과 노력과 행운이 필요합니다.

희망이 도움이됩니다.

관련 문제