내 컴퓨터가 죽었고 이제 내 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
이를 통해 master
ref가 무엇인지 파악하여 이를 복원 할 수 있습니다 (예 : 올바른 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 단계의 파일을 저장소에 붙여넣고
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 작업으로 즉시 되돌려지지는 않습니다. 🙂