Hey Tech

[Git/에러해결] error: src refspec main does not match any error: failed to push some refs to ... 해결책 2가지 본문

SW 개발/Git

[Git/에러해결] error: src refspec main does not match any error: failed to push some refs to ... 해결책 2가지

Tony Park (토니) 2023. 3. 22. 22:56
728x90
반응형

❓ 에러 메시지

에러 발생

error: src refspec main does not match any 
error: failed to push some refs to 'https://github.com/park-gb/[repository].git'

push 하는 중에 위와 같은 에러 메시지를 마주하였습니다.

💡 원인

원인은 크게 2가지 중 하나일 수 있으며 원인별 해결책을 소개합니다.

원인 1) 원격저장소 업데이트 건 pull 받지 않은 경우

원격저장소가 업데이트되었는데 로컬이 이를 pull 받지 않고 Push 하는 경우 push가 제한됩니다.

예를 들어, 팀원이 원격저장소에 새롭게 파일을 추가하였음에도, 본인이 이를 pull 받지 않고 그래도 push 하는 경우입니다.

해결책 1) 원격저장소 pull 받기

git pull 원격저장소명 브랜치명

원격저장소 이름은 주로 oirign으로 입력하므로 일반적인 명령어는 아래와 같습니다.

git pull origin 브랜치명

브랜치명은 기본값으로 main 혹은 master를 쓰나 다른 브랜치명이라면 해당하는 이름을 입력해 주세요.

이제 다시 파일을 push 해주면 됩니다.

원인 2) branch 다른 경우

위 방법으로 해결되지 않으셨다면, 현재 로컬에서 작업 중인 branch와 push 하려는 원격저장소가 달라 발생한 에러일 수 있습니다.

아래 명령어로 이를 확인해 볼 수 있습니다.

git show-ref

아래와 같이, 제가 push 하고자 했던 branch는 main이었으나 현재 가리키는 branch는 master로 상이하여 에러가 발생한 것입니다.

현재 branch 확인

해결책은 크게 2가지가 있습니다.

해결책 2-1) branch 이름 변경

첫 번째 방법은 default branch 이름을 변경하는 것입니다. 아래의 명령어에서 변경 전/후 브랜치명을 각각 입력하여 실행해 주세요.

git branch -m [변경 전 브랜치명] [변경 후 브랜치명]

아래와 같이 실행하면 default branch 이름을 master에서 main으로 변경합니다. 이제 다시 파일을 push 해보시길 바랍니다.

git branch -m master main

참고로, 아래의 명령어도 default branch를 main으로 변경하겠다는 동일한 역할을 수행합니다.

git config --global init.defaultBranch main

해결책 2-2) branch 생성

만약 push 하고자 했던 branch가 아예 없다면 새롭게 생성하는 방법도 있습니다.

git checkout -b [생성할 브랜치명]

브랜치 생성

이제 다시 파일을 push 하여 보시길 바랍니다.


포스팅 내용에 오류가 있다면 댓글 부탁드립니다.
그럼 오늘도 즐거운 하루 보내시길 바랍니다 :)
고맙습니다😊

728x90
반응형