[git] 컴퓨터가 죽은 후 Git 저장소가 손상됨

내 컴퓨터가 죽었고 이제 내 git 저장소 중 하나가 손상되었습니다. 결제 마스터를 시도하면 다음과 같이 알려줍니다.

warning: ignoring broken ref refs/heads/master.
error: Your local changes to the following files would be overwritten by checkout:
        com.vainolo.jdraw2d.releng.p2/pom.xml
Please, commit your changes or stash them before you can switch branches.
Aborting

실행 git stash하면 다음을 얻습니다.

fatal: bad revision 'HEAD'
fatal: bad revision 'HEAD'
fatal: Needed a single revision
You do not have the initial commit yet

그래서 내가 무엇을 할 수 있니?

업데이트
출력 git reflog:

fatal: bad default revision 'HEAD'

별로 유망하지 않은 … 결과 git fsck:

error: Invalid HEAD
Checking object directories: 100% (256/256), done.
error: unable to unpack 59551f96b4e87a1c14293c19eb548ce6fa1f196f header
error: inflateEnd: stream consistency error (no message)
fatal: loose object 59551f96b4e87a1c14293c19eb548ce6fa1f196f (stored in .git/objects/59/551f96b4e87a1c14293c19eb548ce6fa1f196f) is corrupt



답변

나는 다음을 통해 회복 할 수 있었다.

rm .git/refs/remotes/origin/HEAD
git fetch --all


답변

깨진 git 저장소 복구에 제안 된 단계에 따라 시작하십시오 .

  • .git/refs여전히 유용한 것이 있는지 확인
  • 마지막에 git reflog있었던 .git/logs/refs/heads/master브랜치 의 내용을 확인 하고 실패
  • 실행 git fsck, 잠재적으로 --unreachable또는--lost-found

이를 통해 masterref가 무엇인지 파악하여 이를 복원 할 수 있습니다 (예 : 올바른 SHA1을 .git/refs/heads/master.

해당 커밋에 포함 된 개체가 실제로 손상된 경우 HEAD불행히도 커밋을 복원 할 수 없습니다 . 작업 트리 및 / 또는 인덱스가 손상되지 git reset --soft않았다고 가정 git reset하면 이전 커밋을 시도 하거나 실패한 다음 커밋을 다시 수행 할 수 있습니다. 작업 트리 sa git checkout -f또는 git reset --hard.


답변

Windows 8.1에서 블루 스크린으로 인해 비슷한 문제가 발생했습니다.

이 위치에 파일이 있습니다 …

C:\www\<project>\.git\refs\remotes\origin\<problem-branch>

그리고이 폴더의 다른 분기 파일에는 내부에 긴 문자열이있는 반면 비어 있습니다.

NB 변경 / 커밋이 없습니다.

  • <problem-branch>파일을 백업했습니다
  • 파일을 삭제했습니다.
  • git fetch --all 다시 가지를 얻으려면

그런 다음 탭 자동 완성이 다시 작동하기 시작했습니다.


답변

수정 된 파일이 많지 않은 경우이 문제를 해결하는 가장 편리한 방법은 다음과 같습니다.

  1. 리포지토리에서 수정 한 파일 백업
  2. 기존 저장소 제거
  3. 서버에서 다시 복제
  4. 1 단계의 파일을 저장소에 붙여넣고 git commit -a


답변

git \ refs \ heads 디렉토리에서 마스터 파일을 삭제하여이 문제를 해결했습니다.


답변

계산 된 동결 및 충돌 후 git 분기가 다음 메시지와 함께 손상되었습니다
git fatal: your current branch appears to be broken. 나는 아무것도 할 수 없었다.

그 후 git fsck분기에 error: Invalid HEAD.
refs/heads/<branch>했다 invalid sha1 pointer.

여기의 옵션을 .git/refs/heads/<branch>따를 때 메모장 ++ 편집기에서 열었고 각 sha1 문자는 NUL.

다행히 분기를 원격 상태로 재설정하기 만하면되었으며 이는 bitbucket repo에있었습니다. 원격 리포지토리의 끝에서 sha1을 가져 .git/refs/heads/<branch>와서 저장 한 다음git reset --hard HEAD 를 수행하고 모든 작업을 정상으로 되돌 렸습니다.


답변

나는 푸시를 잊어 버릴 정도로 바보 였고 커밋을 수행하는 동안 내 컴퓨터가 충돌했습니다. .git / logs / refs / heads /를 열어 마지막 커밋을 제외한 모든 것을 복구 할 수 있습니다.

이 파일에는 분기에 대한 모든 커밋 (SHA 포함)이 포함되어 있습니다. 복구를 위해 수행 한 작업은 다음과 같습니다.

  • 최신 변경 사항을 임시 폴더에 백업
  • “깨끗한 슬레이트”로 이동
    • git checkout master
    • git reset --hard
  • 로그에서 두 번째에서 마지막 커밋까지 체크 아웃
  • 이 분리 된 머리에서 가지를 만듭니다
  • 푸시
  • 최신 변경 사항 복원
  • 다시 커밋

따라서 멍청한 실수를하더라도 하루 종일 git 작업으로 즉시 되돌려지지는 않습니다. 🙂