IT박스

경고 : 원격 HEAD는 존재하지 않는 참조를 참조하므로 체크 아웃 할 수 없습니다.

itboxs 2020. 10. 27. 07:58
반응형

경고 : 원격 HEAD는 존재하지 않는 참조를 참조하므로 체크 아웃 할 수 없습니다.


이것은 다른 원인에 대한 인기있는 오류처럼 보입니다.

"kiflea.git"라는 간단한 베어 git 저장소가 있습니다. 다음과 같이 복제합니다.

git clone git://kipdola.be/kiflea.git

그런 다음 git은 다음과 같이 말합니다. warning: remote HEAD refers to nonexistent ref, unable to checkout.

그리고 예, .git 디렉토리를 제외하고 맵에 버전이 지정된 파일이 없습니다. 어쨌든, 내가해야 할 유일한 일은 :

cd kiflea
git checkout master

작동하고 모든 파일이 있습니다. 하지만 리포지토리를 복제하면 마스터가 자동으로 체크 아웃되는 것으로 생각했는데 정확히 무슨 일이 일어나고 있으며 어떻게 수정합니까?

git checkout master비트를 수행 한 후 로컬 .git 구성 파일에 추가됩니다.

[branch "master"]
    remote = origin
    merge = refs/heads/master

이 git 저장소가 먼 과거에 svn 저장소였던 것을 아는 것은 흥미로울 것입니다.

추신 : gitweb을 사용하여 베어 저장소를 탐색 할 때 분명히 master분기가 있습니다. http://kipdola.be/gitweb/?p=kiflea.git;a=summary


이는 warning: remote HEAD refers to nonexistent ref, unable to checkout.원격 (베어) 저장소 HEAD에 동일한 저장소의 게시 된 분기와 일치하지 않는 분기 참조가 파일에 포함되어 있음을 의미 합니다.

경고는 git이 체크 아웃하지 않았다는 것을 의미합니다. 복제 된 저장소는 그렇지 않으면 괜찮습니다. git branch -a가능한 분기를 확인 git checkout the-branch-you-want하고 문제를 해결하려면 수행 하십시오 .

이것은 일반적으로 해당 파일의 기본 내용 ( .git/HEAD또는 HEAD베어 저장소의 경우 일반 )이 누군가이 저장소 ref: refs/heads/master로 이동하면 clone기본적으로 브랜치를 복제해야한다는 내용이기 때문에 발생 합니다 refs/heads/master. 기본적으로 Git은 refs/heads/접두사 없이 (즉, master기본적으로) 로컬 브랜치를 생성 합니다. 시도 git help symbolic-ref자세한 내용은.

이 상황의 문제는 Git이 원격 심볼릭 참조 를 수정하는 방법을 제공하지 않기 때문에 Git 호스팅 공급자가 구현 한 것을 사용하거나 (예 : 설정-관리자 권한이있는 경우 GitHub의 기본 분기) 또는 분기 이름을 사용해야한다는 것입니다. master기본 브랜치로 (그 기호 참조의 기본값이기 때문에).

원격 git 저장소에 대한 셸 액세스 권한이있는 경우 기본적으로 사용하려는 브랜치 이름이 cd path/to/bare/git/repo; git symbolic-ref HEAD refs/heads/XYZ어디에 있는지 간단히 알 수 있습니다 XYZ.

이 문제를 해결하는 한 가지 방법은 커밋이없는 새 원격 git push name-of-the-remote my-special-branch-name베어 리포지토리를 생성 한 다음 단일 브랜치를 포함하는 베어 리포지토리를 생성 my-special-branch-name하지만 HEAD심볼릭 참조는 여전히를 가리키는 기본값을 포함하는 것 master입니다. 결과적으로 앞서 언급 한 경고가 표시됩니다.


더 이상 master브랜치를 사용하지 않고 로컬 및 원격 저장소에서 손실 되었기 때문에 동일한 문제가 발생 했습니다.

원격 저장소는 여전히으로 HEAD설정되어 master있으며 실제로 사용하는 원격 분기 중 하나로 변경했으며 모든 것이 잘 작동합니다.

원격 저장소에 액세스 할 수있는 경우 :

  • 당신의 remote_repo.git;
  • HEAD파일 수정
  • 변경 ref: refs/heads/masterref: refs/heads/your_branch

예, 이것은 마스터와 다른 브랜치를 체크 아웃하려는 git 클론과 관련이 있습니다. 그냥 해

git clone user@git-server:project_name.git -b branch_name /some/folder

이렇게하면 브랜치 이름을 통해 정확한 브랜치를 복제하는 데 도움이됩니다.


이 오류가 표시되었지만-내 프로젝트는 여전히 해당 저장소에 연결되어 있습니다- git branch명령을 실행하고 적절한 분기를 git checkout *branchname확인한 다음 실행 하고 BOOM-모든 것이 잘되었습니다.


원격 저장소에 확실히 문제가 있습니다. 저장소의 새 복제본을 만들어 문제를 해결할 수 있습니다. 또한 마스터 브랜치에 새 커밋을 푸시하는 것도 작동 할 수 있습니다.


나는 그것이 *어떻게 든 원격 서버를 속이는 커밋 로그 의 선두라고 생각 합니다.

일부 메뉴 링크를 사용하여 저장소의 웹 인터페이스를 탐색 할 수 있지만 다른 링크 404 - Unknown commit object는 특히 요약 페이지에서 또는 이와 유사한 것으로 실패 합니다.

마지막 커밋 메시지를 수정할 수 있는지 확인한 다음 업데이트를 강제로 푸시하여 문제가 해결되는지 확인하십시오. 서버 악마에 버그가있을 수 있습니다. 문제가 해결되면 git 목록 git@vger.kernel.org (일반 텍스트 메시지 만 해당)에보고 할 가치가 있습니다.


베어 레포를 만들 때 동일한 문제가 발생했습니다.

리포지토리를 복제하고 로컬 마스터 브랜치를 만든 다음 마스터를 원격 리포지토리로 푸시하는 것만으로 해결했습니다.

1) 저장소 복제

$ git.exe clone --progress -v "the remote path" "my local path"

2) 로컬에서 마스터 브랜치를 만듭니다.

   $ git checkout -b master

3) 로컬 브랜치에서 커밋

$ git add readme.md 
$ git commit –m “Added readme”

4) 원격에서 로컬 마스터 푸시

   $ git push origin master

If there is no master branch actually available, check the following; If there is a file named 'packed-refs' inside the '.git' folder, open it and you could find all references listed.

Something like below;

# pack-refs with: peeled fully-peeled 
e7cc58650190bd28599d81917f1706445d3c6d8b refs/tags/afw-test-harness-1.5
^cfae4f034e82591afdf4e5ed72279297d0eee618
6afe1bcfa4bd74de8e0c8f64d024e1cc289206df refs/tags/afw-test-harness-2.1
^c32f7fa495d4b44652f46c065fcd19c3acd237a6
72f2e4284dfbf27c82967da096c6664646bbdd19 refs/tags/android-1.6_r1
^50992e805e758e2231f28ec2127b57a1a9fd0ddc
0cbd528cad1cee9556098b62add993fc3b5dcc33 refs/tags/android-1.6_r1.1

Then use;

git checkout refs/tags/xxxx

Or

git checkout 'HASH value'

to checkout the required version. Thank you.

참고URL : https://stackoverflow.com/questions/11893678/warning-remote-head-refers-to-nonexistent-ref-unable-to-checkout

반응형