2012-01-03 3 views
1

Win7, 64 비트를 사용합니다.GIT는 내가 repo에 커밋이 없다고 말합니다 - 어떻게 복구 할 수 있습니까?

3 개월 동안 정상적으로 작동하는 GitExtensions GUI를 사용합니다. 오늘 커밋을했고, 즉시 내 서버 레포로 밀고 종료했습니다. 나중에 백업을하고 다른 (로컬) 커밋을 시도했을 때 GitExtensions는 저에게 해당 repo에 최선을 다하지 않았으며 변경 사항이있는 119 개의 파일을 보여줬다 고 말했습니다.

분명히 무언가 튀겨서 내 첫 번째 생각은 내 서버 레포에서 당기는 것입니다. 맞춰봐? 서버 레포는 내가 절대로 커밋하지 않았 음을 보여줍니다.

그럼 내 다음 생각은 GitExtensions가 거짓말입니다. 그래서 Tortoise GIT로 이동하여 "로그보기"를했습니다. 맞춰봐? GitExtensions는 거짓말하지 않습니다. Tortoise GIT는 또한 내 repo에 절대로 전념하지 않았 음을 보여줍니다.

내가 실제로 저장소에서 찾아 볼 때, 나는이 프로젝트에서 3 개월 동안 수행 한 합리적인 모양의 타임 스탬프로 모든 개체 파일을 볼 수 있습니다.

어떻게 GIT를 복구하고 내가 3 개월 동안 커밋을했는지 알 수 있습니까? 필자가 본 유일한 기사는 이전 커밋을 시작점으로 사용해야하는 개별 손실 된 커밋을 복구하는 방법에 관한 것입니다. 분명히 그것은 저에게 커밋을 볼 수 없기 때문에 저를 도와주지 않을 것입니다.

도움 주셔서 감사합니다.

답변

0

.git 폴더가 아직 있습니까? 그것이 git이 모든 것을 저장하는 곳이라면 그것은 정보입니다. 그렇지 않다면 돌아올 것이 없습니다. 그렇지 않다면 로컬 git이 없어집니다. 만약 .git이 여전히 있다면, git log를 실행 해보고 그 내용을보십시오.

.git 폴더가 없으면 서버에서 "새로운"복제본을 만들어 모든 것을 검색 할 수 있어야합니다.

+0

예 .git 폴더가 있으며 거기에 아직 모든 개체가 표시됩니다. "git log"를 실행하고 "fatal : 나쁜 기본 개정판"HEAD '메시지를 받았습니다. " – xpnctoc

+0

그리고 서버에서 복제 할 수 없습니다. 원격 저장소가 동일한 동작을 나타냅니다. 마치 커밋을 손상시킨 GUI 툴과 같습니다. 서버에 즉시 푸시했기 때문에 부패가 서버 레포에도 전달되었습니다. – xpnctoc

+0

그래서 GUI 도구가 묻지 않고 강제 푸시를 수행 했습니까?! – ThiefMaster

1

먼저 저장소를 백업하여 실패한 수정을 시도해도 더 나쁜 것을 손상시키지 않도록하십시오.

git fsck은 저장소의 오류를 찾고 수정할 수 있도록 도와줍니다.

git reflog은 고아 커밋을 식별하고 기록을 재구성하는 데 도움을 줄 수 있습니다.

이 대답은 "bad default revision"에 있습니다. 오류가 도움이 될 수 있습니다.

fsck가 아무 것도하지 않는다면, 저의 첫 번째 생각은 원격 저장소의 HEAD를 다시 커밋 한 다음 다시 복제하려고 시도하는 것입니다.

1

"git log master"또는 다른 분기에 대한 정보를 확인하십시오. 이것이 작동하면 "git bundle"을 사용하여 커밋과 관련된 모든 객체를 명시 적으로 내보낼 수 있습니다. 린스하고 반복하여 .git/refs의 다른 브랜치에 문의하십시오.

이 문제를 해결하려면 명령 줄로 내려가는 것이 가장 좋습니다. 최신 msysgit을 다운로드하십시오.

+0

Git Extensions에는 명령 행 도구가 있습니다. – Shay