git pull에 대한 Git 오류 (로컬 참조를 업데이트 할 수 없음)


115

나는 분기 마스터 만 있고 "git pull"을 시도 할 때마다이 오류가 발생합니다.

error: Couldn't set refs/remotes/origin/master
From /var/lib/git/xxx/project
 ! a0f80ea..49177a3  master     -> origin/master  (unable to update local ref)

그리고 "git pull origin master"를 수행하면 다음과 같이 표시됩니다.

error: Couldn't set ORIG_HEAD
fatal: Cannot update the ref 'ORIG_HEAD'.

나는 찾고 있었지만 이유를 찾을 수 없다


2
로컬 저장소는 어디에 있습니까? 풀을 실행하는 데 사용하는 사용자와 다른 사용자로 생성 했습니까? 파일 권한 문제처럼 들립니다.
tpg2114

네, 당신은 프로젝트 파일의 소유자가 다른 사용자라고 말한 직후입니다. 이제 제 질문은 너무 어리석은 것 같습니다.하지만 당신이 대답을 주
셨으니

제발 @ tpg2114 이것을 선택에 대한 답변으로 추가하십시오
user115561

답변:


263

저희 팀과 저는이 오류에 부딪 혔습니다. SourceTree를 가져올 때 local ref를 업데이트 할 수없는 했습니다.

우리는 사용했었다 :

git gc --prune=now

이렇게하면 문제를 해결해야하는 중복 참조 개체가 제거됩니다.

다음은 git 참조 및 정리에 대해 자세히 알아볼 수있는 몇 가지 링크입니다. .

금주의 자식 팁

git-prune 문서

자식 참조


1
나를 위해 일함, 같은 메시지, Windows 7의 Sourcetree
James Westgate

2
이 문제도 막 시작했습니다. 무리 감사! 완벽하게 작동했습니다!
ddrossi93

3
다음 두 명령이 모두 필요할 수 있습니다. git gc --prune=now git remote prune originfrom stackoverflow.com/questions/2998832/…
bryan

1
나는 시도했지만 git remote prune origin작동하지 않았습니다. 그러나 그 후에 이것을 시도 git gc --prune=now하고 작동했습니다! 둘 다 그 순서대로 필요한지 아니면 이것 만 필요한지 확실하지 않습니다.
Anurag

1
또 다른 비밀스러운 문제 git는 간결한 솔루션으로 유용한 StackOverflow 게시물로 이어집니다.
ijoseph

128

다음과 같이 해결했습니다.

git remote prune origin


6
유레카! 실제로 작동했습니다. 이름이 바뀐 분기 원격 또는 기타와 관련이 있습니다. 나는 그것을 시도하고 설명하지 않을 것입니다.
TheSoftwareJedi

8
이것은 나를 위해 그것을했다, git gc --prune=now아무것도하지 않았다
Josh G

3
같은. 이것은 나를 위해 작동합니다. git gc --prune = now는 나를 위해 작동하지 않았습니다.
Tony

16

gitbach line commande를 사용 git update-ref하여 로컬 브랜치의 참조를 업데이트 하는 데 사용 합니다.

$ git update-ref -d refs/remotes/origin/[locked branch name]

다음을 사용하여 당겨 $ git pull

[locked branch name] 커밋 ID 불일치로 인해 오류가 발생한 분기의 이름입니다.


13

git 저장소 루트 폴더에서 다음 명령을 사용하십시오.

rm .git/logs/refs/remotes/origin/master 

Windows에서이 폴더는 어디에 있습니까?
Kolob Canyon

찾았어요. 그것은 당신이 복제 어떤 디렉토리입니다
계산법 캐년

12

Bitbuck Repo에서 내 lokal 복사본으로 가져 오려는 동일한 오류 메시지를 발견했습니다. 또한 Branche 마스터가 하나만 있으며 명령 git pull origin master이이 오류 메시지를 표시합니다.

From https://bitbucket.org/xxx
 * branch            master     -> FETCH_HEAD
error: Couldn't set ORIG_HEAD
fatal: Cannot update the ref 'ORIG_HEAD'.

다음과 같이 해결책

  1. git reflog 마지막 커밋 번호 찾기
  2. git reset --hard <numnber> 마지막 커밋으로 재설정
  3. git pull origin master 실수없이 다시 당기다

10

rm .git/refs/remotes/origin/master

그것은 나에게 작동합니다!


8

를 실행하는 git pull사용자가 저장소를 만든 사용자와 동일한 지 확인합니다. 파일 권한이 올바르지 않습니다.


나를 위해 나는 chown을 사용하여 올바른 사용자에게 git pull in to the repo의 파일 소유자를 변경해야했습니다. 나는 이것을 읽을 때 나에게는 분명하지 않았지만 이것이 기본적으로 당신이 말한 것이라고 생각합니다.
Dee

나는 이것에 동의하고, 소유자와 그룹이 ".git"repo를 끌어들이려는 사용자로 설정되어 있는지 확인합니다 ( "root"인 브랜치를 끌어온 경우 발생합니다) "sudo chown -R"이 제 경우에 작업을 수행했습니다.
jo_


2

이것은 대소 문자를 구분하지 않는 파일 시스템을 사용하는 OSX에서 나에게 발생했습니다. 어떻게 든 다른 개발자가 이름은 같지만 대소 문자가 다른 브랜치를 푸시했습니다. My-Branchvsmy-branch .

나는 이미 My-Branch체크 아웃했고 아마도 파일 시스템이 My-Branch== 라고 생각하기 때문에 풀을했을 때 "unable to update local ref"라는 오류가 발생했습니다.my-branch .

Github를 사용하기 때문에 Github의 GUI를 통해 브랜치 중 하나를 삭제하여 문제를 해결할 수있었습니다.


제 경우에는 충돌하는 두 분기가 다른 사용자의 소유이므로 삭제할 수 없습니다. 대신 .git \ refs \ remotes 아래에있는 브랜치 참조 파일을 삭제하여 수정했습니다 (일시적으로-다른 사용자가 브랜치 중 하나를 삭제할 때까지 가져올 때마다 문제가 다시 발생합니다).
Jana Mandic 2016 년

내 문제는 또한 대문자가 다른 로컬 지점과 원격으로 인해 발생했습니다. 위의 prune 명령을 사용하여 로컬 브랜치를 삭제 한 다음 오리진에서 체크 아웃하여 문제를 해결했습니다
설명

1

이 오류 (로컬 참조를 업데이트 할 수 없음)는 최근에 암호를 변경했고 Windows 및 Linux 로그인을 통합하는 멋진 기능이있는 경우에도 발생할 수 있습니다.


1

PC 사용자와 대화하기-재부팅합니다.

솔직히 그것은 나를 위해 일했습니다. 나는 이런 식으로 부패라고 생각한 두 가지 이상한 자식 문제를 해결했습니다.


1

이것은 아마도 매우 틈새 상황 일 수 있지만, 저는 MacBook Pro의 Parallels VM에서 Windows를 실행하고 macOS와 공유되는 VM의 디스크에 저장된 로컬 저장소를 사용합니다.

Windows VM에있는 리포지토리의 Mac 앱에서 파일을 연 경우 "로컬 참조를 업데이트 할 수 없음"오류가 발생하는 경우가 있습니다. 이 경우 해결 방법은 파일을 닫거나 Mac 앱을 종료하는 것입니다.


1

여기서 무슨 일이 있었나요? 원격 브랜치에 대한 로컬 참조가 변경 git pull되었으므로을 실행할 때 git은 해당 원격 브랜치를 찾지 못해 실패합니다.

git remote prune origin

실제로이 로컬 참조를 정리 한 다음 git pull 다시 합니다.

제안- --dry-run안전을 위해 옵션으로 실행하십시오


0

디스크가 가득 차서 데비안 서버에서 동일한 문제가 발생했습니다. 장치에 남은 공간이 없어 임시 파일을 만들 수 없습니다. 일부 파일을 정리 한 후 문제가 해결되었습니다.


0

이것은 나를위한 일

rm .git/logs/refs/remotes/origin/master 

나는 이것이 도움이되거나 전혀 작동하지 않는지 의심합니다. 저를 설득하기 위해 이것이 어떻게 작동해야하고 왜 문제를 해결해야하는지에 대한 설명을 추가하십시오. 겉보기에 유사한 기존 다른 답변의 차이점을 강조하는 것은 보너스가 될 것입니다. 특히 Babak의 찬성 투표.
Yunnosch

0

나는 같은 오류가 있었고 Eclipse 내에서 업데이트하고 많은 오류가 발생했습니다. 그래서 DOS 명령 창에서 업데이트를 시도했는데 동일한 문제가 발생했습니다.

그런 다음 "git gc --prune = now"솔루션을 시도했습니다. 이것은 파일이 refs 디렉토리에 잠겨 있다는 메시지를주었습니다.

Eclipse는 "refs"디렉토리에있는 무언가에 잠겨 있어야합니다.
내가 찾은 해결책은 단순히 Eclipse를 닫는 것입니다. 그런 다음 "git PULL"명령으로 DOS에서 저장소를 업데이트했고 모든 것이 잘 작동했습니다.


0

.git / logs / refs / remotes / origin / [Locked Branch Name] 파일 제거


1
나는 이것이 도움이되거나 전혀 작동하지 않는지 의심합니다. 저를 설득하기 위해 이것이 어떻게 작동해야하고 왜 문제를 해결해야하는지에 대한 설명을 추가하십시오. 겉보기에 유사한 기존 다른 답변의 차이점을 강조하는 것은 보너스가 될 것입니다. 특히 Babak의 찬성 투표.
Yunnosch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.