본문 바로가기
프로그래밍 놀이터/Tips

[git] git pull error : remote ref is at xxx but yyy expected

by 돼지왕왕돼지 2020. 3. 5.

[git] git pull error : remote ref is at xxx but yyy expected



-

git pull 을 수행하다보면 종종 "git pull error : remote ref is at xxx but yyy expected" 의 에러를 내뱉으며 pull 이 실패하곤 한다.

xxx, yyy 는 hash 값이고, 실상 저 에러는 git fetch 과정에서 발생한다.

그런데 이 에러가 영구적이지 않고, 에러 발생 이후 다시 pull 을 시도하면 다시 잘 작동한다...



-

이 에러가 발생하는 이유 중 하나는 누군가가 repository 의 history 를 git push --force 로 해서 tree 를 망가뜨렸기 때문이라고 한다. (stackoverflow 의 답변 참고)



-

또 다른 이유 중 하나는 case sensitive 하지 않은 file system 에서 대소문자를 다르게 썼을 때 발생한다고 한다.

예를 들어 abc branch 를 ABC 로 바꾼 경우 이런 에러가 발생한다고 한다.

이것이 원인일 경우 .git/config 에 ignorecase = true 설정을 주면 된다고 한다.



-

필자의 경우는 다시 pull 했을 때 이슈가 해결되었지만, 해결되지 않는다면 다음의 방법들을 추천한다.

아래 단계는 순차적으로 적용이 아닌 선택적으로 하나를 적용한다.


1. 

$ git remote prune origin


2. 

.git/refs/remotes/origin folder 를 제거한 후 다시 pull 시도


3. 

$ git update-ref -d refs/remote/origin


4. 

$ git gc --prune=now





댓글0