programing

gitc fatal: 불량 객체 refs/remote/origin/HEAD 오류를 처리하는 방법?

newstyles 2023. 5. 29. 09:56

gitc fatal: 불량 객체 refs/remote/origin/HEAD 오류를 처리하는 방법?

오늘 Git 가비지 컬렉션을 실행하려고 시도하는 동안 무작위로 이것을 눌렀습니다.

$ git gc
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack

어떻게 대처해야 합니까?

저는 이것의 영향을 이해할 수 없지만, 이 스레드에서 제안한 것처럼, 제가 이것을 만났을 때 저는 그냥 했습니다.

$ mv .git/refs/remotes/origin/HEAD /tmp

(만약을 대비해 그것을 주변에 보관) 그리고 나서.

$ git gc

아무런 불평 없이 일했습니다. 저는 어떤 문제에도 부딪히지 않았습니다.

트렌턴의 대답을 본 후, 나는 나의.git/refs/remotes/origin/HEAD그리고 그것은 또한 현재 삭제된 오래된 분기를 가리키고 있습니다.

하지만 저는 직접 파일을 편집하는 대신 라이언의 솔루션을 시도했습니다.

git remote set-head origin --auto

자동으로 파일을 새 분기로 설정하고,git gc그 후로는 잘 작동했습니다.

우연히 마주친 문제(의 댓글에서 @Stavarengo가 언급한 것과 동일한 문제)는 기본 원격 분기(develop나의 경우)는 삭제되었지만 여전히 참조되었습니다..git/refs/remotes/origin/HEAD.

오프닝.git/refs/remotes/origin/HEAD편집자가 보여준 것은 다음과 같습니다.

ref: refs/remotes/origin/develop

새 기본 브랜치를 가리키도록 주의 깊게 편집했는데 모든 것이 정상이었습니다.

ref: refs/remotes/origin/master

제게 힌트를 준 단서는 달리기가git prune다음 오류를 표시했습니다.

> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD

다행입니다. 이 https://makandracards.com/chris-4/54101-fixing-a-git-repo 을 찾았습니다.

fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack

업스트림 분기가 제거되었고 원점이 이를 가리키고 있는 경우 이 문제가 발생할 수 있습니다.다음을 실행하여 확인할 수 있습니다.

cat .git/refs/remotes/origin/HEAD

존재하지 않는 분기를 가리키는 경우 실행:

git remote set-head origin --auto

다음에

git gc

해결할 것입니다

당신의 심볼릭 레프가 고장난 것 같군요다음과 같이 기본 분기로 교체해 보십시오.예를 들어, 기본 분기는 master입니다.

$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc

그것으로 해결될 겁니다.

git update-ref -d [wrong reference here]

이렇게 하면 이 문제가 해결됩니다.

위의 문제에 대해서는 다음 코드를 사용하십시오.

git update-ref -d 'refs/remotes/origin/HEAD'

아래와 같은 .git 오류가 발생하는 경우:

error: bad ref for .git/logs/refs/remotes/origin/Dec/session-dynatrace-logs 6

아래와 같이 참조에서 시작하는 경로를 복사할 수 있습니다.

git update-ref -d 'refs/remotes/origin/Dec/session-dynatrace-logs 6'

기본 브랜치가 에서 변경되어 이 오류가 발생했습니다.master로.main저는 이 문제를 해결하기 위해 위의 답변 중 몇 가지가 제공한 정보를 사용했습니다.

cat .git/refs/remotes/origin/HEAD

반환됨:

ref: refs/remotes/origin/master

이 문제를 해결하기 위해, 저는 다음을 실행했습니다.

git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

다시 실행하여 다시 확인했습니다.

cat .git/refs/remotes/origin/HEAD

반환된 항목:

ref: refs/remotes/origin/main

그리고나서git gc그리고.git prune잘 작동했습니다.


어떤 일이 일어나는지 보기 위해 저도 시도했습니다.

git remote set-head origin --auto

반환된 항목:

origin/HEAD set to main

그리고 그것은 자동으로 심판을 식별함으로써 문제를 해결합니다.

Git가 자체 데이터를 저장하고 있는 .git 폴더를 포함하여 Google Drive에서 호스팅되는 저장소의 모든 곳에 "desktop.ini" 파일이 있기 때문에 위의 솔루션이 부분적으로 도움이 되었습니다.Git는 해당 폴더의 모든 파일에 Google Drive 데이터가 아닌 Git 데이터가 포함될 것으로 예상했으며 desktop.ini 파일 내용을 해석하는 중에 질식했습니다.이를 방지하려면 다음을 포함해야 합니다.desktop.ini.gitignore

Windows에서 다음과 같이 배치 명령을 사용하여 이러한 파일을 처음 삭제했습니다.

  1. 저장소에 "delete.bat" 파일을 만들고 다음 코드를 추가합니다.

    del /s /q /f /a ".\desktop.ini"

  2. 을 엽니다.cmd 폴더를 .

  3. 려달을 delete.bat간단히 불러들이기만 하면.cmd

이제도수겁니다있을칠망겁다를 실행할 수 .git remote set-head origin --auto

에 뒤에git gc

rm.git/refs/리모트/오리진/HEAD

gitgc

Git Worktree를 사용하는 경우에는 다음 작업을 수행해야 합니다.

git worktree prune

달리기 전에

git gc

작업 트리가 손상되었는데, 손상된 작업 트리를 제거한 후에 작업 트리가 손상된 것 같습니다. git prune그 자체로는 효과가 없어 보였습니다.

Windows에서 압축된 폴더에서 작업한 것이 원인이었습니다.폴더의 압축을 풀면 팩 파일이 손상되어 존재하지 않는 분기를 잘라낼 수 없는 등의 기타 이상한 문제가 발생합니다.

작업 디렉터리를 지우고 repo 원격을 다시 복제하는 것이 유일한 해결 방법이었습니다.다행히도, 저는 여전히 업데이트를 밀고 당겨서 손실되지 않도록 할 수 있었습니다.이제 모든 것이 다 좋아요.

특정 지점에서 문제가 발생했습니다.
분기에 대한 참조 파일이 손상된 것 같습니다.그렇게 고쳤어요.

main git 크아웃메인체메인▁g웃.
.git\refs\heads\branch_xpto 했습니다.

git checkout branch_xpto

동일한 문제가 발생하여 오리진 분기에서 풀링을 시도할 때 다음 오류가 발생했습니다.

fatal: bad object refs/remotes/origin/account

위의 해결책들은 어떤 이유에서인지 저에게 효과가 없었습니다.이 오류가 계속 발생했습니다.

mv: cannot stat '.git/refs/remotes/origin/HEAD': No such file or directory

리고달기리를 실행합니다.git gc다음 오류가 발생했습니다.

error: bad ref for .git/logs/refs/remotes/origin/account
fatal: bad object refs/remotes/origin/account
fatal: failed to run repack

내 상황에서 원격 지점이 존재하지 않는 지점을 가리키고 있었습니다.

제가 해결한 것은 지점을 삭제하는 것이었습니다.

git branch -D account

한다음삭다니제합서에서 합니다..git/refs/remotes/origin/account

모든 것이 완벽하게 작동합니다.

다른 사용자가 이 오류를 수신하는 경우

fatal: bad object refs/stash 2
error: https://github.com/Username/repository.git did not send all necessary objects

이렇게 고쳤습니다.

mv .git/refs/stash\ 2 /tmp
git gc

제게 효과가 있었던 것은 계속 오류가 발생했기 때문에 PC의 폴더 자체에 들어가는 것이었습니다.

No such file or directory

달릴 때마다

mv .git/refs/remotes/origin/HEAD /tmp 

$ git gc git prune

숨겨진 파일을 연 후 Mac 또는 Windows에서 cmd + shift + .를 누른 후 ref > remote > origin을 눌러 불필요한 파일을 삭제할 수 있습니다.

언급URL : https://stackoverflow.com/questions/37145151/how-to-handle-git-gc-fatal-bad-object-refs-remotes-origin-head-error