Development/Git

git :: error failed to push some refs to 오류 해결

고고마코드 2022. 6. 13. 13:15
반응형

작업을 진행중인 곳에 새로운 repository 를 연결하려고 했습니다.
git remote add origin "git주소" 로 정상적으로 연결을 했지만, push 과정에서 오류가 발생해 이를 해결하는 과정입니다.


오류 원인

failed to push some refs to "git addr"

해석하자면 일부 참조를 원격 저장소에 push 하지 못 했다는 뜻입니다.

그림과 함께 설명하자면,

내가 수정한 a.txt 파일을 원격 저장소에 push 하려고 했는데, 그 전에 누군가 b.txt 파일을 수정해서 push 했다.

즉, 내가 수정하지 않은 b.txt 파일과 현재 원격 저장소에 등록되어 있는 b.txt 파일의 내용이 다르기 때문에 발생하는 오류입니다.

당연히 새로운 repository 를 만들었다면 원격 저장소와 로컬 저장소의 내용이 다르기 때문에 저런 오류가 발생했을 겁니다.


해결 방법

기본적으로 add, commit 이후에 발생하는 작업들입니다.

만약 원격 저장소를 추가하지 못 했다면 아래 명령어를 통해 원격 저장소부터 추가해 주세요.

$ git remote add origin "원격 저장소 주소"

  1. git pull origin [원격 저장소]
    첫 번째 해결 방법은 원격 저장소의 내용을 pull 로 가져온 후 다시 push 하는 방법입니다.
    $ git pull origin main
    $ git push origin main

main 에는 각자의 원격/로컬 저장소의 이름을 입력해 주세요.

대부분의 경우에는 여기서 해결이 되겠지만, 이미 작업한 소스가 있는 경로에 원격 저장소를 연결할 때는 원활한 실행이 되지 않을 수도 있습니다.

  1. git push origin [로컬 저장소]:[원격 저장소]
    $ git push origin main:main

일반적으로 원격 저장소에 push 할 때에는 git push origin main 처럼 push 를 합니다.

그러나 새 리포지토리를 만들면 로컬 저장소에서 push 하려는 브랜치와 일치하는 브랜치를 찾을 수 없어서 오류가 발생합니다. 그러므로 push 하고자 하는 원격 저장소 브랜치의 이름을 명시하는 것입니다.

  1. git push -f origin [원격저장소]
    $ git push origin +main

이 방법은 원격 저장소에 강제로 push 하는 방법입니다. 간단히 원격 저장소 이름 앞에 '+' 만 붙여주면 됩니다.

강제 push 방법은 새로운 레포지토리에 등록할 경우이거나 이도 저도 안 될 때 백업 후 최후의 수단으로 사용하는 방법입니다.

그 동안 등록했던 commit 내용들이 사라질 수도 있기 때문에 git 저장소에 작업했던 내역들이 많다면 차라리 다른 방법을 차근차근 찾아보는 것이 좋을 것 같습니다.


반응형